MySQL触发器未保存
执行此命令:MySQL触发器未保存,mysql,sql,Mysql,Sql,执行此命令: CREATE TRIGGER `after_order_insert` AFTER INSERT ON `hb_orders` FOR EACH ROW BEGIN UPDATE hb_accounts SET hb_accounts.domain = (SELECT companyname FROM hb_client_details WHERE hb_client_details.id = N
CREATE TRIGGER `after_order_insert`
AFTER INSERT ON `hb_orders` FOR EACH ROW
BEGIN
UPDATE hb_accounts
SET hb_accounts.domain = (SELECT companyname FROM hb_client_details
WHERE hb_client_details.id = NEW.client_id
LIMIT 1)
WHERE hb_accounts.client_id = NEW.client_id;
END
结果如下:
/*SQL错误(1064):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第8行“”附近要使用的正确语法*/
我错过了什么?这应该行得通,不是吗
谢谢您很可能试图添加触发器而不更改分隔符。由于触发器包含分号,因此必须暂时将分隔符更改为其他分隔符
DELIMITER //
CREATE TRIGGER `after_order_insert`
AFTER INSERT ON `hb_orders` FOR EACH ROW
BEGIN
UPDATE hb_accounts
SET hb_accounts.domain = (SELECT companyname FROM hb_client_details
WHERE hb_client_details.id = NEW.client_id
LIMIT 1)
WHERE hb_accounts.client_id = NEW.client_id;
END //
DELIMITER ;
。请注意,分隔符在设置中已更改,下面是另一个实现:
CREATE TRIGGER `after_order_insert`
AFTER INSERT ON `hb_orders` FOR EACH ROW
UPDATE hb_accounts a
join hb_client_details b on a.client_id = b.id and b.id = new.client_id
set a.domain = b.companyname;