Как сделать вложенный, когда в триггере в SQL? - PullRequest
0 голосов
/ 02 декабря 2019

Что не так с этим утверждением? В сообщении говорится, что я получаю сообщение об ошибке «КОГДА» мне нужно проверить, чтобы убедиться, что проблема с внешним ключом отсутствует, и после этого мне нужно проверить, произошла ли ошибка внешнего ключа из-за ошибки при вводе данных в неправильную таблицу.

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;

1 Ответ

0 голосов
/ 02 декабря 2019

используйте 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;
...