Portál AbcLinuxu, 8. listopadu 2025 11:47
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.