Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 下面提到的SQL查询给出错误_Mysql_Sql_Syntax Error - Fatal编程技术网

Mysql 下面提到的SQL查询给出错误

Mysql 下面提到的SQL查询给出错误,mysql,sql,syntax-error,Mysql,Sql,Syntax Error,我有一个sql查询 CREATE DEFINER=`root`@`localhost` TRIGGER `trigger_vacation_mode` AFTER UPDATE ON `oc_ms_seller` FOR EACH ROW BEGIN if NEW.vacation_mode <> OLD.vacation_mode THEN UPDATE `oc_product` AS p SET p.date_modified = NOW() WHER

我有一个sql查询

CREATE DEFINER=`root`@`localhost` TRIGGER `trigger_vacation_mode` AFTER UPDATE ON `oc_ms_seller`
FOR EACH ROW
BEGIN
 if NEW.vacation_mode <> OLD.vacation_mode THEN

    UPDATE `oc_product` AS p
    SET p.date_modified = NOW()
    WHERE p.product_id IN (SELECT DISTINCT product_id FROM `oc_ms_seller` AS ms join
    `oc_ms_product` AS mp ON ms.seller_id = mp.seller_id)

 END IF;
END;
增加一个;到内部查询更新的结尾

您需要在IF语句中终止内部查询

CREATE DEFINER=`root`@`localhost` TRIGGER `trigger_vacation_mode` AFTER UPDATE ON `oc_ms_seller`
FOR EACH ROW
    BEGIN
        if NEW.vacation_mode <> OLD.vacation_mode THEN

            UPDATE `oc_product` AS p
            SET p.date_modified = NOW()
            WHERE p.product_id IN (SELECT DISTINCT product_id FROM `oc_ms_seller` AS ms join
                `oc_ms_product` AS mp ON ms.seller_id = mp.seller_id);
        END IF;
    END;
增加一个;到内部查询更新的结尾

您需要在IF语句中终止内部查询

CREATE DEFINER=`root`@`localhost` TRIGGER `trigger_vacation_mode` AFTER UPDATE ON `oc_ms_seller`
FOR EACH ROW
    BEGIN
        if NEW.vacation_mode <> OLD.vacation_mode THEN

            UPDATE `oc_product` AS p
            SET p.date_modified = NOW()
            WHERE p.product_id IN (SELECT DISTINCT product_id FROM `oc_ms_seller` AS ms join
                `oc_ms_product` AS mp ON ms.seller_id = mp.seller_id);
        END IF;
    END;

您需要覆盖默认分隔符

DELIMITER //

CREATE DEFINER=`root`@`localhost` TRIGGER `trigger_vacation_mode` AFTER UPDATE ON `oc_ms_seller`
FOR EACH ROW
BEGIN
 if NEW.vacation_mode <> OLD.vacation_mode THEN

    UPDATE `oc_product` AS p
    SET p.date_modified = NOW()
    WHERE p.product_id IN (SELECT DISTINCT product_id FROM `oc_ms_seller` AS ms join
    `oc_ms_product` AS mp ON ms.seller_id = mp.seller_id);

 END IF;
END//

DELIMITER ;

DELIMITER语句更改分号形式的标准分隔符;另一个//。

您需要覆盖默认分隔符

DELIMITER //

CREATE DEFINER=`root`@`localhost` TRIGGER `trigger_vacation_mode` AFTER UPDATE ON `oc_ms_seller`
FOR EACH ROW
BEGIN
 if NEW.vacation_mode <> OLD.vacation_mode THEN

    UPDATE `oc_product` AS p
    SET p.date_modified = NOW()
    WHERE p.product_id IN (SELECT DISTINCT product_id FROM `oc_ms_seller` AS ms join
    `oc_ms_product` AS mp ON ms.seller_id = mp.seller_id);

 END IF;
END//

DELIMITER ;

DELIMITER语句更改分号形式的标准分隔符;到另一个这里//。

仍然得到1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第9行附近要使用的正确语法。是否在sql cli中发送查询?仍然获取1064-您的sql语法有错误;检查与您的MySQL服务器版本对应的手册,了解第9行附近要使用的正确语法是否在sql cli中发送查询?获取错误1064-您的sql语法有错误;检查与您的MySQL服务器版本对应的手册,以获得使用near'END IF的正确语法;END'在第11行try now在endgetting错误1064之后不应该有分号-您的SQL语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以获得使用near'END IF的正确语法;“结束”在第11行尝试现在结束后不应该有分号