gpt4 book ai didi

mysql - 在同一表上更新之前或之后触发更新

转载 作者:行者123 更新时间:2023-11-29 17:48:24 25 4
gpt4 key购买 nike

我有这张表:

Table: product

通过使用 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 表中创建列 something like this :

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

这会在表中创建一个“神奇”列,每当其行首次插入或更新时,该列都会更新为当前时间。

最近版本的 MySQL(但旧版本除外)也允许对 DATETIME 列执行此操作。

您可以使用DATE(price_change_time) 来仅检索时间戳的日期部分。

关于mysql - 在同一表上更新之前或之后触发更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49609945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com