使用触发器代替外键

时间:2016-11-17 01:03:03

标签: oracle triggers sqlplus

练习题是这样的:

实现执行与之相同功能的触发器 以下外键约束:

ALTER TABLE Sample ADD CONSTRAINT sample_fk
FOREIGN KEY (tissue_type_id) 
    REFERENCES Tissue_Type(tissue_type_id);

tissue_type_idSampletissue_type两个表中的属性。

遵循

格式

Using a trigger to implement a foreign key check constraint

到目前为止,我有:

CREATE OR REPLACE TRIGGER tissue_type_inck
BEFORE INSERT ON SAMPLE
FOR EACH ROW
BEGIN
    DECLARE 
    tissueType tissue_type.tissue_type_id%TYPE;

    SELECT TISSUE_TYPE_ID
        INTO tissueType
    FROM TISSUE_TYPE
    WHERE TISSUE_TYPE_ID=:NEW.TISSUE_TYPE_ID;

    IF :NEW.TISSUE_TYPE_ID != tissueType THEN
        RAISE_APPLICATION_ERROR(-20001,'INVALID TISSUE TYPE');
    END IF;
END;
/

我收到编译错误:

  

警告:使用编译错误创建触发器。

我哪里错了?抱歉格式化并谢谢!

1 个答案:

答案 0 :(得分:0)

BEGIN
DECLARE 
    tissueType tissue_type.tissue_type_id%TYPE;

另一方面:

DECLARE 
    tissueType tissue_type.tissue_type_id%TYPE;
BEGIN