我正在尝试创建一个触发器,以确保PC表中的任何插入都没有笔记本电脑表中已存在的型号ID。我编辑了几次这个语句,但我一直收到警告:触发器因编译错误而创建。
CREATE OR REPLACE TRIGGER chk_models
BEFORE INSERT ON PC
FOR EACH ROW
DECLARE mcount :=0;
BEGIN
SELECT COUNT(*)
INTO mcount
FROM PC
JOIN Laptop
ON :NEW.model=Laptop.model;
IF mcount!=0
THEN RAISE_APPLICATION_ERROR (-20004, "Model Number Violation");
END IF;
END;
你对我如何解决这个问题有什么建议吗?
答案 0 :(得分:0)
声明变量mcount
的数据类型并对文本使用单引号。此外,连接是多余的,所以我删除了它。
这应该适合你:
CREATE OR REPLACE TRIGGER chk_models
BEFORE INSERT ON PC
FOR EACH ROW
DECLARE
mcount int :=0;
BEGIN
SELECT COUNT(*)
INTO mcount
from Laptop
where model = :NEW.model;
IF mcount!=0
THEN RAISE_APPLICATION_ERROR (-20004, 'Model Number Violation');
END IF;
END;