[mysql]创建触发器影响特定的行

标签: 触发器 sql MySQL
发布时间: 2015/6/11 20:46:51
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要它做的事情是任何插入新行或编辑现有行 B 上时,会在 A.更新特定 'last_seen' 列

这是到目前为止所:

CREATE TRIGGER insert_records
AFTER UPDATE ON loan_records
FOR EACH ROW
Update  temp_card A
INNER JOIN loan_records B
SET A.last_seen = CURRENT_TIMESTAMP
WHERE A.card_no = B.card_no

与此

CREATE TRIGGER insert_records2
AFTER INSERT ON loan_records
FOR EACH ROW
Update  temp_card A
INNER JOIN loan_records B
SET A.last_seen =CURRENT_TIMESTAMP
WHERE A.card_no = B.card_no

目前这将更新所有 'last_seen' 列 A 中,无论他们已经被更新。

解决方法 1:

你不需要 JOIN 这两个表。只需使用 NEW.card_noWHERE 你的更新语句的子句。

这里是两者如何 ( AFTER INSERTAFTER UPDATE ) 您的触发器可能看起来像

CREATE TRIGGER tg_loan_records_insert
AFTER INSERT ON loan_records
FOR EACH ROW
  UPDATE temp_card 
     SET last_seen = NOW()
   WHERE card_no = NEW.card_no;

CREATE TRIGGER tg_loan_records_update
AFTER UPDATE ON loan_records
FOR EACH ROW
  UPDATE temp_card 
     SET last_seen = NOW()
   WHERE card_no = NEW.card_no;

这里是SQLFiddle演示

赞助商