我不知道这是否可行,但我active在表中有一个列.每当活动列发生更改时,我想重置date列中的日期,但只有在active列发生更改时才会重置.
如果更改了其他列但未更改active列,则日期将保持不变.
Hai*_*vgi 33
就像是
DELIMITER //
CREATE TRIGGER updtrigger BEFORE UPDATE ON mytable
FOR EACH ROW
BEGIN
IF NEW.active <> OLD.active THEN
SET NEW.date = '';
END IF;
END
//
Run Code Online (Sandbox Code Playgroud)
小智 15
在#2示例中遇到IF测试的问题.当其中一个值为null时,<> test返回null.这导致测试无法满足,即使一个值根本不等于null,触发器的操作也不会运行.为了解决这个问题,我想出了一个使用<=>(NULL-safe equal)的测试.希望这有助于某人.
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;
$$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28668 次 |
| 最近记录: |