Posts

Showing posts from January 29, 2013

Primary Key and Foreign Key on Char field (ORA-02291: integrity constraint)

I have tables a and b with character field as its primary key foreign key relation. The primary key field is with char(5) and foreign key field is with char(50). When I tried to insert to child table selecting from primary key column i get "ORA-02291". After giving little rest to brain I figured out whats going wrong. When insert is fired to column with char data type of child table, oracle is appending spaces on top of the value coming from primary key column (because its a char field!!!) . So primary key column value + spaces to fill the character field that makes the child a different value, that's the reason for ORA-02291. This is how it works SQL> create table a(id number,rel char(5)) ; Table created. SQL> create table b(id number,rel char(5)) ; Table created. SQL> create table c(id number,rel char(50)) ; Table created. SQL> alter table a add(constraint a_pk primary key (rel)); Table altered. SQL> alter table b add(c