在sql中的触发器中如何进行嵌套?

问题描述 投票:0回答:1

此声明有什么问题?它说我在“何时”出现错误,我需要检查以确保没有外键问题,之后,我需要检查外键问题是否源于错误表中输入数据的错误。

CREATE TRIGGER trigger3
            BEFORE INSERT ON sightings
            FOR EACH ROW
                WHEN ((SELECT flowers.comname FROM flowers WHERE comname = NEW.name) IS NULL) 
                BEGIN
                    WHEN ((SELECT genus, species FROM flowers WHERE CONCAT(species,' ',genus) = NEW.name) IS NOT NULL)
                    THEN
                        INSERT INTO sightings VALUES (comname, NEW.person, NEW.location, NEW.sighted)
                    END IF;
                END; 
            END;
sql triggers insert nested case-when
1个回答
0
投票
使用IF代替WHEN

CREATE TRIGGER trigger3 BEFORE INSERT ON sightings FOR EACH ROW BEGIN IF ((SELECT flowers.comname FROM flowers WHERE comname = NEW.name) IS NULL) BEGIN IF ((SELECT genus, species FROM flowers WHERE CONCAT(species,' ',genus) = NEW.name) IS NOT NULL) BEGIN INSERT INTO sightings VALUES (comname, NEW.person, NEW.location, NEW.sighted) END ; END; END; END;

© www.soinside.com 2019 - 2024. All rights reserved.