Autor Zpráva
anonymní
Profil *
Ahoj, potreboval bych pomoct s nasledujicim dotazem

INSERT INTO rubrika SET nazev = 'sfsdfsdf', pozice = (SELECT MAX(pozice) + 1 FROM rubrika)

mi haze chybu
You can't specify target table for update in FROM clause
Kajman_
Profil *
INSERT INTO rubrika (nazev, pozice) SELECT 'sfsdfsdf', IFNULL(MAX(pozice),0) + 1 FROM rubrika
anonymní
Profil *
a s tim mym tvarem by to neslo? pouzivam to ve tride pro rychlou tvorbu dotazu insert a update, abych na to mel jeden kod:-/ pres tento klasicky INSERT INTO tabulka (sloupce) (hodnoty) to znam, ale radeji bych prvnim tvarem.
Kajman_
Profil *
A pozice je primární klíč? Pak využijte autoincrementu a vynechte ten sloupeček úplně.
anonymní
Profil *
ne neni, je tam jeste sloupec id, pro prehlednost sem uvedl ale pouze dva sloupce
anonymní
Profil *
ještě mne napadlo, že by to šlo asi vyřešit přes uložené procedury nebo trigery, aby se to tam nějak automaticky vkládalo? bylo by to i "čistější" řešení, ale nevím jak to napsat
Kajman_
Profil *
A není jednodušší upravit tu třídu? Tak aby neměla problémy ve chvíli, kdy se čte a vkládá do stejné tabulky?

Případně si udělat číslování do úplně jiné tabulky a udělat si funkci co vrátí další číslo a uloží ho? Tak abyste nečetl z té samé, do které vkládáte záznam.
Kajman_
Profil *
Nebo ten insert napsat přímo bez pomoci třídy, když je blbě napsaná a tohle nezvládne :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: