SQL 查询给出下面提到的错误
SQL query giving error mentioned below
我有一个 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;
执行时出现此错误
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 'END IF
END' at line 11
在内部查询 UPDATE...
的末尾添加一个 ;
。
您需要在 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
语句将分号 (;
) 的标准分隔符更改为另一个(此处为 //
)。
我有一个 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;
执行时出现此错误
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 'END IF
END' at line 11
在内部查询 UPDATE...
的末尾添加一个 ;
。
您需要在 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
语句将分号 (;
) 的标准分隔符更改为另一个(此处为 //
)。