在现有触发器

时间:2016-10-25 15:31:04

标签: mysql triggers

我有以下SQL更新触发器正常工作:

BEGIN
DECLARE myID INT;

SELECT user_id INTO myID FROM writer WHERE writer_id = NEW.writer_id;

IF (NEW.status_id = 2)  THEN
    INSERT INTO activity (
        user_id,
        work_id,
        activity,
        date_created
    ) VALUES (
        myID,
        NEW.work_id,
        'confirmed',
        now()
    );
ELSE
    INSERT INTO activity (
        user_id,
        work_id,
        activity,
        date_created
    ) VALUES (
        myID,
        NEW.work_id,
        'modified',
        now()
    );

END IF;
END

我需要添加一个额外的触发器,如下所示:

CREATE TRIGGER updateWorkStatus AFTER UPDATE ON writer_split
FOR EACH ROW
  BEGIN
    UPDATE work a
      JOIN writer_split b
        ON a.work_id = b.work_id AND a.current_version = b.version
    SET a.status_id = 2
    WHERE a.work_id NOT IN (
      SELECT ab.work_id
      FROM (SELECT s.work_id
            FROM work w INNER JOIN writer_split s
                ON w.work_id = s.work_id AND s.status_id != 2) ab
    );
  END;

当我运行此创建脚本时,我收到语法错误。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对我来说,我会使用UPDATE work as a