gpt4 book ai didi

mysql - mysql中使用多个表的触发器

转载 作者:行者123 更新时间:2023-11-29 19:36:23 24 4
gpt4 key购买 nike

我有三张 table

ms_seller 表(seller_id - 主键)

seller_id  seller_status vacation_mode
50 0 1

ms_product 表(product_id - 主键)

product_id    seller_id
9 50
2 50

产品表

product_id     date_modified
2 2017-01-06 16:13:27
9 2017-01-06 16:13:27

我的问题是

如果我要更新ms_seller表中的卖家状态或假期模式,那么根据seller_id 50,我们将从ms_product表中选择product_id,然后根据product_id 2和9,我必须更新产品表中今天日期修改的日期

我正在尝试此操作,但出现错误

CREATE TRIGGER trigger_vacation_mode
ON oc_ms_seller.vacation_mode
AFTER UPDATE
FOR EACH ROW
UPDATE oc_product p
SET p.date_modified = NOW()
WHERE ID IN (SELECT DISTINCT product_id FROM oc_ms_seller ms join oc_ms_product mp ON ms.seller_id= mp.seller_id);

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON oc_ms_seller.vacation_mode
AFTER UPDATE
FOR EACH ROW
UPDATE oc_product' at line 2

感谢您的建议

最佳答案

您收到的错误消息来自于您尝试在字段 (oc_ms_seller.vacation_mode) 上声明触发器,但是触发器适用于表格

请参阅 MySQL 文档 create trigger详情:

CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name
trigger_time trigger_event
ON **tbl_name** FOR EACH ROW
[trigger_order]
trigger_body

但是,在触发器中,您应该在更新语句的 where 条件中使用 NEW.fieldname 引用,否则更新将更改所有匹配的记录。

关于mysql - mysql中使用多个表的触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41544975/

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