【问题标题】:Using a trigger in place of a foreign key使用触发器代替外键
【发布时间】:2017-03-31 09:57:04
【问题描述】:

练习题是这样的:

实现与 以下外键约束:

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;
/

我得到编译错误:

警告:触发器创建时出现编译错误。

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

【问题讨论】:

  • 好的,我真的是 Oracle,我已经更新了我的帖子
  • 修复插入触发器后,不要忘记外键也与更新有关(以及 PK 表上的更新和删除)。

标签: oracle triggers sqlplus


【解决方案1】:
BEGIN
DECLARE 
    tissueType tissue_type.tissue_type_id%TYPE;

它在另一条路上:

DECLARE 
    tissueType tissue_type.tissue_type_id%TYPE;
BEGIN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多