如何创建触发器以从单独的表中删除相应的元组?

时间:2013-04-23 05:23:24

标签: oracle triggers sqlplus

例如,您删除一个表中的行,并链接到相应表中的条目。从第一个表中删除时,此触发器应从第二个表中删除元组(假设其外键匹配)。换句话说,级联删除。假设无法将级联删除选项添加到表中。

我正在使用Oracle / SQL Plus,这是我的尝试:

CREATE OR REPLACE TRIGGER delCascade
    BEFORE DELETE ON student
    REFERENCING OLD AS oldRow
    FOR EACH ROW    
BEGIN
    DELETE FROM taking
    WHERE taking.studentnum = oldRow.studentnum;
END;
/

我一直收到警告:

Warning: Trigger created with compilation errors.

2 个答案:

答案 0 :(得分:2)

试试这个

CREATE OR REPLACE TRIGGER delCascade
    BEFORE DELETE ON student
    REFERENCING OLD AS oldRow
    FOR EACH ROW    
BEGIN
    DELETE FROM taking
    WHERE taking.studentnum = :oldRow.studentnum;
END;

答案 1 :(得分:0)

给出

STUD(rollno, name, birthdate)
RESULT(rollno, marks)

1)编写一个触发器,如果​​学生记录被删除,将从RESULT表中删除所有相关记录。

create or replace trigger del_trg
after delete on stud_trg
for each row
begin
    if deleting then
        delete from result where stud_trg.rollno=result.rollno;
    end if;
end;