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

Popular posts from this blog

Add email recipient to all new Trac tickets -

400 Bad Request on Apache/PHP AddHandler wrapper -

php - Change action and image src url's with jQuery -