Sie können dies mit einem BEFORE
tun auf diese Weise auslösen
CREATE TRIGGER tg_bi_mytable
BEFORE INSERT ON mytable
FOR EACH ROW
SET NEW.address1 = IF(EXISTS
(
SELECT *
FROM mytable
WHERE address1 IN(NEW.address1, NEW.address2)
OR address2 IN(NEW.address1, NEW.address2)
), NULL, NEW.address1);
Hinweis: Da Sie eine MySQL-Version verwenden, der SIGNAL
fehlt Der Trick besteht darin, gegen NOT NULL
zu verstoßen Beschränkung auf eine der Spalten, wenn Zeilen mit der gleichen Adresse gefunden wurden.
Hier ist SQLFiddle
Demo. Entkommentieren Sie eine der letzten Insert-Anweisungen und klicken Sie auf Build Schema
. Diese Einfügungen werden nicht erfolgreich sein.