2017-02-27 45 views
0

我正在尝试创建一个触发器,以确保向PC表中插入的任何模型ID都不具有已存在于笔记本电脑表中的模型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

声明变量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; 
+0

它的工作。非常感谢你 - 非常感谢。 –