mysql:创建trrigger时语法错误

w8rqjzmb  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(300)

如果父表中不存在行,我只是尝试将该行插入父表中。我得到“声明不完整。应为“;”在“插入”行。

CREATE TRIGGER SellsInsertAlcoholAdd 
AFTER INSERT ON Sells
FOR EACH ROW
BEGIN
    IF(NEW.`Alcohol name` NOT IN
        (SELECT `Alcohol name` FROM Alcohol))
    THEN INSERT INTO Alcohol VALUES(NEW.`Alcohol Name`, NEW.`Type`, NEW.ABV, NEW.Manufacturer);
    END IF;
END
w6mmgewl

w6mmgewl1#

此外(除了madhur的答案之外),您不需要任何 IF . 简单地做 INSERT IGNORE ... . (这是假设 Alcohol nameUNIQUE 或者 PRIMARY .)

tv6aics1

tv6aics12#

你不必要得到所有的钱 Alcohol name 值,然后检查 NEW 内在价值。相反,您可以改为使用 NOT EXISTS() .
你也需要改变 DELIMITER 去别的地方(除了 ; )一开始。最后,将其重新定义为 ; ```
DELIMITER $$
CREATE TRIGGER SellsInsertAlcoholAdd
AFTER INSERT ON Sells
FOR EACH ROW
BEGIN
IF NOT EXISTS(SELECT 1 FROM Alcohol
WHERE Alcohol name = NEW.Alcohol name) THEN
INSERT INTO Alcohol
VALUES(NEW.Alcohol Name, NEW.Type, NEW.ABV, NEW.Manufacturer);
END IF;
END $$
DELIMITER ;

相关问题