Oracle 使用触发器对两个表强制执行约束
我正在尝试创建一个触发器,以确保PC表中的任何插入都没有笔记本电脑表中已经存在的型号ID。我对语句进行了几次编辑,但不断收到警告:触发器是用编译错误创建的Oracle 使用触发器对两个表强制执行约束,oracle,sqlplus,Oracle,Sqlplus,我正在尝试创建一个触发器,以确保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
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;
关于如何解决这个问题,您有什么建议吗?声明变量
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;