Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL触发器未保存_Mysql_Sql - Fatal编程技术网

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;