关于oracle触发器的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:17:26
有表A和表B
表A的结构为id integer,depname varchar2(50)
表B的结构为id integer,depid integer,customer varchar2(50)
其中表B中的depid值必须属于表A(即表B数据不能出现表A中id值不存在的数值)。要求编写触发器(难)
限制用户添加B表记录时,depid必须是属于表A中id的值。
如表A中id为1,则表B可以插入中depid的值为1。请高人帮忙编写代码。

又是大学生,唉,自己老不动脑筋.发个例子,自己研究.
第八章 触发器(Trigger)
--格式:
create or replace trigger 名称
[after|before][delete|update|insert]
[on 表 | on schema]
[referencing new as 别名 old as 别名]
[for each row]
declare
....
begin
...
exception
....
end;

--创建一个delete类型行级触发器
--删除的一行数据保存在:old
create or replace trigger emp_delete_row_trigger
after delete
on emp
referencing new as n old as o
for each row
begin
dbms_output.put_line('emp_delete_row_trigger called.');
dbms_output.put_line('删除员工:' || :o.empno || ' ' || :o.ename);
end;

delete from emp where empno=7499;
delete from emp;
--创建一个insert类型行级触发器
--插入的一行新数据保存在:new
create or replace trigger emp_insert_row_trigger
after insert
on emp
for each row
begin
dbms_output.put_line('emp_insert_row_trigger called.');
dbms_output.put_line(&