【问题标题】:MySQL trigger after update - update if columns are not nullMySQL 更新后触发器 - 如果列不为空则更新
【发布时间】:2018-02-02 17:15:59
【问题描述】:

我想在更新记录后更新一列“状态”,并且只有四个特定列不为空。这是我的触发器,但它不能正常工作。

CREATE TRIGGER `after_thesis_rate_upade`
AFTER UPDATE ON `theses` 
FOR EACH ROW IF (new.promoterRate IS NOT NULL AND new.promoterNote IS NOT NULL AND new.reviewerNote IS NOT NULL AND new.reviewerRate IS NOT NULL) 
THEN 
UPDATE theses SET new.status="Oceniona" WHERE old.id=new.id;
 END IF;

当我更新这些列时,状态列仍然是相同的,当尝试更改 MySQL phpMyAdmin 中的值时,会抛出错误“无法更改,因为设置了触发器”。你能告诉我有什么问题吗?

【问题讨论】:

    标签: mysql triggers phpmyadmin


    【解决方案1】:

    您不要在触发器中修改触发触发器的表;只需在 NEW.fieldnames 上使用 SET 语句即可。

    IF some_condition THEN
      SET NEW.blah2 = 'something or other';
    END IF;
    

    【讨论】:

    • 我做了这个 SET new.status="Oceniona";并抛出错误 #1362 - 触发器后不允许更新新行
    • 那么可能应该是BEFORE UPDATE 触发器; AFTER 表示数据已经写入。 SET OLD.status 可能AFTER UPDATE 中工作,但我还没有处理足够的触发器来确定没有自己尝试。
    • 好的,只是在查看另一个问题的触发器文档,看起来只能设置新字段,并且只能在 [INSERT|UPDATE] 触发器之前设置。
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多