Portál AbcLinuxu, 14. května 2025 05:44
CREATE TRIGGER tr_usernameSync AFTER UPDATE ON mailbox_base FOR EACH ROW BEGIN IF (NEW.username != CONCAT(NEW.local_part, '@', NEW.domain)) THEN BEGIN UPDATE `mailbox_base` SET `username` = CONCAT(NEW.local_part, '@', NEW.domain); END; END IF; END;Ale mysql mi při pokusu o update tabulky zahlásí "#1442 - Can't update table 'mailbox_base' in stored function/trigger because it is already used by statement which invoked this stored function/trigger." Zkoušel jsem to obejít tak, že jsem v triggeru volal proceduru na ten update, ale stejně to nefungovalo. Zkouším to rozchodit už nějakou tu hodinku. Mohl by mi někdo poradit co s tím?
CREATE TRIGGER tr_usernameSync AFTER UPDATE ON mailbox_base FOR EACH ROW BEGIN IF (NEW.username != CONCAT(NEW.local_part, '@', NEW.domain)) THEN BEGIN NEW.username = CONCAT(NEW.local_part, '@', NEW.domain); END; END IF; END;
CREATE TRIGGER tr_usernameSync BEFORE UPDATE ON mailbox_base FOR EACH ROW BEGIN IF (NEW.username != CONCAT(NEW.local_part, '@', NEW.domain)) THEN BEGIN SET NEW.username = CONCAT(NEW.local_part, '@', NEW.domain); END; END IF; END;Tohle funguje. Proč ale nefunguje tamto?
CREATE TRIGGER tr_usernameSync BEFORE UPDATE ON mailbox_case FOR EACH ROW
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.