我的代码不起作用,Oracle告诉我触发器已经创建了构建错误.显然我无法获得有关构建错误的更准确信息......
我之前没有做过很多SQL,所以我对语法并不熟悉.我有预感,这是我不喜欢的IF EXISTS(SELECT ...)THEN声明,我一直在谷歌搜索类似的例子,但我真的找不到任何有用的东西.
所以关于代码:
如果选择中存在任何东西,我会引发错误.
CREATE OR REPLACE TRIGGER chev_surv
BEFORE INSERT OR UPDATE ON surveillance
FOR EACH ROW
BEGIN
IF EXISTS (
SELECT * FROM surveillance
WHERE surveillance.numInfirmier = :NEW.numInfirmier
AND ((surveillance.debut > :NEW.debut AND surveillance.debut < :NEW.fin)
OR (surveillance.fin > :NEW.debut AND surveillance.fin < :NEW.fin))
) THEN
RAISE_APPLICATION_ERROR(-20001,
'Il ne doit pas y avoir de chevauchement entre deux périodes surveillance pour un surveillant.');
END IF;
END;
/
Run Code Online (Sandbox Code Playgroud)知道什么是错的吗?