Autor Zpráva
Pavlik
Profil *
Dobrý den.

Mám dvě tabulky, TAB1 a TAB2, které mají stejnou strukturu (ID, IMEI, TYPE, VALUE, COMMANDID, STATE, ... a nějaký další zbytečnosti).

Nyní potřebuji zavést funkci, kdy jakmile je záznam v TAB1 updatován na STATE=1, potřeboval bych se mrknout do TAB2, zda v ní není další záznam se stejným IMEI a pokud ano, tak aby jej vložil do TAB1.

Zkoušel jsem vytvořit trigger na TAB1 (after update), ale ten mě nepustí vložit nový záznam do tabulky ze které byl spuštěn trigger (viz hláška:
MySQL hlásí: Dokumentace
#1442 - Can't update table 'TAB1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

Přikládám trigger:

DROP TRIGGER `tblUNITNEWCONFIG_after_upd_tr1`;
CREATE DEFINER = 'configuser'@'localhost' TRIGGER `tblUNITNEWCONFIG_after_upd_tr1` BEFORE UPDATE ON `TAB1`
FOR EACH ROW
BEGIN
IF ((NEW.TYPE=53) and (NEW.STATE=1)) THEN
CALL `ADDCURRENTCONFIG`(NEW.IMEI);
ELSEIF ((NEW.TYPE=53) and (NEW.STATE=3)) THEN
DELETE FROM `TAB2` WHERE IMEI=NEW.IMEI;
END IF;
END;

Funkce `ADDCURRENTCONFIG` se podívá do oné druhé tabulky TAB2 a pokud nalezne záznam se stejným IMEI, vloží jej do TAB1.

Díky za pomoc.
Kajman
Profil
Řádkovým triggerem nemůžete modifikovat jiné řádky té stejné tabulky. Zkuste to udělat bez pomoci triggeru.
Pavlik
Profil *
Kajman:
Kdybych věděl jak tak už to je udělané :). Nějaké nápady prosím ? :)
Kajman
Profil
Máte pod kontrolou všechna místa, odkud se může ten update volat? Co tam místo update např. zavolat uloženou proceduru, která udělá update a případně i insert?

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:

0