Autor | Zpráva | ||
---|---|---|---|
radecek Profil |
#1 · Zasláno: 17. 7. 2011, 13:03:56
Ahoj,
potrebuju definovat trigger, ktery bude reagovat na insert a pritom vlozi do jine tabulky dalsi data. table0 - cilova tabulka, definuje nejake slozitejsi vazby ktere jsou v triggeru triggerTable - tabulka na kterou ja vazan trigger table1 - libovona tabulka insert into table0 (col1, col2) (select triggerTable.id, table2.id from triggerTable, table2 ... where ... triggerTable.id = NEW.id) Dotaz je orezany, podminka vyhledavani a relace neni tedka dulezita.. Pokud vezmu tento dotaz a misto NEW.id vlozim posledni vlozene id do triggerTable tak se provede spravne. Zkousel jsem udelat testovaci tabulku kde budu ukladat NEW.id a take ma spravnou hodnotu.. Ale i tak se trigger neprovadi.. Existuje nejaky log trigeru nebo dotazu abych se mohl podivat co presne se mi provadi? Nebo napadas vas reseni kde by mohla byt chyba? Trigger je affter.. Je lepsi to udelat pomoci triggeru, protoze table0 je davkova tabulka mezi relamecemi vice tabulek, ktera se pak zpracovava postupne v zavisloti na dnech a casech.. |
||
Kajman_ Profil * |
#2 · Zasláno: 18. 7. 2011, 12:38:03
Nedělejte select do tabulky, na které je trigger navěšen. Použitje NEW.hodnoty, tam kde je potřebujete.
select NEW.id, table2.id from table2 where ... |
||
radecek Profil |
#3 · Zasláno: 18. 7. 2011, 12:53:25
Hmm to je fakt.. Uz vim kde je chyba.. Plni se dve tabulky - inzerat a regiony, ale regiony se provedou az po vlozeni dotazu a taky triggeru.. tedy se nesplni podminka pro vyhledavani regionu a do table0 se nevlozi tedy nic..
Da se nejak udelat abych mel trigger na skupinu dotazu? Nebo respektive ho spustit o neco pozdeji.. Diky.. |
||
Kajman_ Profil * |
#4 · Zasláno: 18. 7. 2011, 12:58:35
Tak si nedělejte trigger, ale uloženou proceduru, kterou spustíte na konci skupiny dotazů.
|
||
radecek Profil |
#5 · Zasláno: 18. 7. 2011, 13:02:25 · Upravil/a: radecek
Tak jsem to i udelal ale musim na to myslet a volat ji v metode modulu.. Pres transakce to nejde udelat?
|
||
Časová prodleva: 13 let
|
0