我不知道这是否可行,但我在表格中有一个名为active
的列。每当活动列发生变化时,我想重置date
列中的日期,但如果active
列发生更改,则仅。
如果更改了其他列但未更改active
列,则日期将保持不变。
答案 0 :(得分:32)
类似
DELIMITER //
CREATE TRIGGER updtrigger BEFORE UPDATE ON mytable
FOR EACH ROW
BEGIN
IF NEW.active <> OLD.active THEN
SET NEW.date = '';
END IF;
END
//
答案 1 :(得分:15)
在#2示例中遇到IF测试的问题。当其中一个值为null时,&lt;&gt; test返回null。这导致测试无法满足,即使一个值根本不等于null,触发器的操作也不会运行。为了解决这个问题,我想出了一个使用&lt; =&gt;的测试。 (NULL安全相等)。希望这有助于某人。
DELIMITER $$
DROP TRIGGER IF EXISTS updtrigger ;
$$
CREATE TRIGGER updtrigger AFTER UPDATE
ON yourTable FOR EACH ROW
BEGIN
IF ((NEW.active <=> OLD.active) = 0) THEN
SET NEW.date = '';
END IF;
$$