mysql触发器更新'modifieddate'列工作不正常

xmjla07d  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(321)

我有一个特殊要求,需要自动将'modifieddate'列的datetime值更新为now(),如果:
提供的值为空
提供的值与更新之前的值相同
但是
如果提供的值是任何其他日期字符串,则使用值更新列。
所以,我已经设置了这个触发器,但现在有些东西是正确的:

CREATE TRIGGER `tr_users_updateModDateOnUpdate` BEFORE UPDATE ON `tbl_users`
 FOR EACH ROW IF (OLD.date_modified <> NEW.date_modified) THEN
  SET NEW.date_modified = IFNULL(NEW.date_modified, NOW());
ELSE
  SET NEW.date_modified = NOW();
END IF

我看不出有什么问题,但是我在用我的web应用程序测试时出现了奇怪的行为。。所以试着看看问题是我的触发器,还是我的php代码。。。
有人能告诉我,如果我的触发代码似乎适合我的要求以上?万分感谢!
拍打

eivgtgni

eivgtgni1#

你的触发器包含一个 IF 声明,所以需要 BEGIN/END 阻止。而且,条件似乎不符合你的要求。最后,您需要设置 DELIMITER .
我想这正是你想要的:

delimiter //

create trigger tr_users_update_mod_date_on_update 
before update on tbl_users
for each row 
begin
    if new.date_modified is null or old.date_modified = new.date_modified then
        set new.date_modified = now();
    end if;
end;
//

delimiter ;

相关问题