2014-04-11 111 views
1

我在MySQL中有一個表,我正在更新。我希望觸發器能夠獲取更新的行ID以便使用它。我該怎麼做?我可以在SQL Server中做到這一點,但我是MySQL的新手,無法在網上找到任何東西。MYSQL更新觸發器獲取更新的行ID

UPDATE ...

所以我不能共享代碼,但是這基本上是要我想做的事情。

Table: 
**id** **product** **price** 
1,  Coke,   2.05 USD 
2,  Sprite,  2.00 USD 
3,  7Up,   2.10 USD 

我想更新id 2,「Sprite」價格爲2.50 USD。現在我通常會這樣做,但我需要運行一個將更新審計表的觸發器。審計表將需要註冊產品的ID。所以基本上我需要知道,更新的行的ID是2 ...

是否有什麼類似的SQL?

+1

你可以發佈你的代碼嗎?你的意思是在觸發器內做一些工作嗎?使用「FOR EACH ROW」並使用別名「NEW.your_column」和「OLD.your_column」引用列。你能詳細闡述一下嗎? – citizen404

+1

只要id不會改變,您可以在觸發器中使用'NEW.id'或'OLD.id'。我會寫一個例子。 – citizen404

回答

5

只要id列不會更改,您可以使用NEW.idOLD.id參考id列。

一般說來,別名爲NEW,您可以獲取更新列的當前值,並獲得該列在執行更新之前具有的值。

CREATE TRIGGER au_product_table 
    AFTER UPDATE ON product_table 
    FOR EACH ROW 
    UPDATE audit 
     SET product_id = NEW.id 
     WHERE your_condition;