Circular Dependency
#
create table employee_table (
NAME varchar(20),
ssn int not null,
super_ssn int,
DNO int not null,
Primary key (ssn),
foreign key (super_ssn) references employee_table(ssn) deferrable initially deferred,
foreign key (DNO) references dept_table(DNUMBER) deferrable initially deferred
)
-------------------------
create table dept_table (
dname varchar(20),
DNUMBER int,
mgr_ssn int not null,
primary key (DNUMBER)
)
-------------------------
alter table dept_table add constraint fkdepttable
foreign key (mgr_ssn) references employee_table(ssn)
deferrable initially deferred
-------------------------
Dropping Circular Dependency
#
drop table dept_table cascade constraints
Using Transactions
#
BEGIN -- To Start Transaction
insert into dept_table (name, dnumber, Mgr_ssn) values ('Reserache', 1, '100')
insert into employee (name, ssn, super_ssn, dno) values ('Gatito', 12, 12, 1)
COMMIT; -- To End Transaction
EXCEPTION
with others then
rollback;
raise;