我有这张桌子:
通过使用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?
答案 0 :(得分:0)
您可以在MySQL表something like this中创建一个列:
CREATE TABLE product (
...
price_change_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
...
);
这会在表中创建一个“魔术”列,只要其行首次被INSERTed或UPDATEd,就会更新到当前时间。
MySQL的最新版本,但不是旧版本,也适用于DATETIME
列。
您可以使用DATE(price_change_time)
仅检索时间戳的日期部分。