我有三张桌子
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表中更新卖家状态或vacation_mode,那么根据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
感谢任何建议
答案 0 :(得分:0)
您收到的错误消息来自于您尝试在字段(oc_ms_seller.vacation_mode
)上声明触发器,但是,触发器适用于表格
有关详细信息,请参阅create trigger上的MySQL文档:
CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON **tbl_name** FOR EACH ROW [trigger_order] trigger_body
但是,在触发器中,您应该在update语句的where条件中使用NEW.fieldname
引用,否则更新将更改所有匹配的记录。