如果父表中不存在该行,我只是试图将其插入到父表中。我在“ INSERT INTO”行上看到“ Statement notcomplete。Expecting';'”。
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
答案 0 :(得分:1)
您不必要获取所有的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 ;
答案 1 :(得分:1)
此外(除了Madhur的答案),您不需要任何IF
。只需执行INSERT IGNORE ...
。 (这假设Alcohol name
是UNIQUE
或PRIMARY
。)