我有三张 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/