2013-07-26 56 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