sql - How to declare a foreign key with an OR condition using Oracle? -
i have table (a) primary key either foreign key table (b) or table (c).
create table ( akey number, txt varchar2(10) ); create table b ( bkey number, txt varchar2(10) ); create table c ( ckey number, txt varchar2(10) ); what want like:
alter table add constraint borckey foreign key (akey) references b(bkey)` or c(ckey); is possible?
no, sort of thing not possible in oracle.
your options are
- create 2 different columns (bkey , ckey) in bkey references b.bkey , ckey references c.ckey , create constraint ensures 1 non-null @ point in time.
- create sort of "combined b & c" entity b & c have foreign keys , make foreign key in reference key of combination entity.
if want constraint ensures 1 of 2 columns null , 1 not null row
create table one_key( col1 number, col2 number, check( nvl2(col1,1,0) + nvl2(col2,1,0) = 1 ) )
Comments
Post a Comment