Autor | Zpráva | ||
---|---|---|---|
anonymní Profil * |
#1 · Zasláno: 4. 5. 2009, 20:17:19
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 * |
#2 · Zasláno: 4. 5. 2009, 20:26:41
INSERT INTO rubrika (nazev, pozice) SELECT 'sfsdfsdf', IFNULL(MAX(pozice),0) + 1 FROM rubrika |
||
anonymní Profil * |
#3 · Zasláno: 4. 5. 2009, 20:29:36
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 * |
#4 · Zasláno: 4. 5. 2009, 20:34:05
A pozice je primární klíč? Pak využijte autoincrementu a vynechte ten sloupeček úplně.
|
||
anonymní Profil * |
#5 · Zasláno: 4. 5. 2009, 20:38:33
ne neni, je tam jeste sloupec id, pro prehlednost sem uvedl ale pouze dva sloupce
|
||
anonymní Profil * |
#6 · Zasláno: 5. 5. 2009, 08:19:54
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 * |
#7 · Zasláno: 5. 5. 2009, 08:46:32
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 * |
#8 · Zasláno: 5. 5. 2009, 08:47:50
Nebo ten insert napsat přímo bez pomoci třídy, když je blbě napsaná a tohle nezvládne :-)
|
||
Časová prodleva: 15 let
|
0