oracle11g - Before update trigger with referential integrity in oracle 11g -
i want understand before update in trigger means.
i have table called dept_mst dept_id primary key. has 2 rows dept_id 1 , 2.
another table emp has columns emp_id primary key , emp_dept_id foreign key referencing dept_id of dept table.
now if add before update trigger on emp tables emp_dept_id column check if new value emp_dept_id present in master table dept if insert new row new dept_id dept table.
now if update emp_dept_id 3 emp_dept_id 2 in emp table giving integrity constraint violation error parent not found.
so,
- does mean oracle checks integrity constraints first , calls "before update" trigger?
- then how can bypass check , call before update trigger?
- what "before update" mean here?
- how can achieve above result using triggers , not using explicit pl sql block?
thank you
non-deferred foreign key constraints evaluated before triggers called, yes.
if can declare foreign key constraint deferrable (which require dropping , re-creating if existing constraint not deferrable)
alter table emp add constraint fk_emp_dept (emp_dept_id) references dept( dept_id ) deferred deferrable; in application, can set constraint deferrable, run insert statement causing trigger fire , insert parent row. foreign key constraint validated when transaction commits.
an alternative defining constraint deferrable rename emp table to, say, emp_base, create view named emp , create instead of insert trigger on emp implements logic of first inserting dept , inserting emp_base.
Comments
Post a Comment