2013-07-26 57 views
1

我希望它做的是在新的行或第B现有行的编辑任何插入,具体的“last_seen”列将在A.更新创建触发器影响特定行

这是我到目前为止:

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”栏目,他们不管是否已经更新。

回答

1

你不需要JOIN两个表。只需在UPDATE语句的WHERE子句中使用NEW.card_no即可。

下面是两个(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演示

+0

@Ohhreeohh有没有帮助? – peterm

+0

作品魅力!你是一个拯救生命的人。 – Ohhreeohh

0

您应该只引用当前更新的ID。

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 and a.id = OLD.id 

有关如何更新之前,使用更多的细节,更新后请参阅

http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html