簡體   English   中英

在同一表上更新之前或之后觸發更新

[英]Trigger Update Before Or After Update On Same Table

我有這張桌子:

表:產品

通過使用PHPMYADMIN,我正在考慮設置一個觸發器,以便每當我更改任何項目的價格時,它都將觸發以記錄該特定項目在price_change_time上的時間。

我的觸發器是這樣的:

 DELIMITER // CREATE TRIGGER update_time BEFORE UPDATE ON product FOR EACH ROW BEGIN UPDATE product SET price_change_time = NOW() WHERE NEW.price <> OLD.price; END; // DELIMITER ; 

不幸的是,這行不通,我得到:

 MySQL said:Documentation #1442 - Can't update table 'product' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

我閱讀了一些以前相關的問題和答案,但仍然無法滿足我的情況。

有人願意幫助嗎? 我的問題是:

1) Is there any way to achieve what I want by just using PHPMYADMIN?
2) If Not then what is the proper way?

您可以創建在MySQL表中的列是這樣的

CREATE TABLE product (
...
price_change_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
...
);

這會在您的表中創建一個“魔術”列,該列在第一次插入或更新時會更新為當前時間。

MySQL的最新版本(而不是較舊的版本)也允許DATETIME列使用。

您可以使用DATE(price_change_time)檢索時間戳的日期部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM