2014-01-10 3 views
1

У меня есть таблица в Oracle, таблица что-то вроде:ссылочной целостности в 2-х таблиц в оракула

create table serv (
ser number(7), 
mno number(4), 
cp number(4), 
primary key (ser, mno, cp) 
); 

и другие таблицы, и, как:

create table ftp (
mno number(4), 
cp number(4), 
ftp varchar2(9), 
ser number(7), 
constraint fk_prueba 
    foreign key (mno, ser,cp) 
    references serv (mno, ser,cp) 
); 

И я пытаюсь вставить в таблицу ремонт лежит следующие значения:

insert into serv values(1,2,3); 

Теперь я вставляя в FTP таблице значения:

insert into ftp values (1,2,'hola',null); 
insert into ftp values (1,5,'hola',null); 
insert into ftp values (1,9,'hola',null); 

И проблема в том, что я могу вставить значения в FTP, а значения не могут быть вставлены, потому что в серв у меня есть MnO 2, и я вставив MnO в FTP, который не существует в серв ,

Мне нужно вставить значения в ftp, которые существуют в serv.

Кто может помочь?

С благодарностью

+0

Это очень хороший момент. В Oracle это ограничение или свойство, а не уверен. Я не знаю точной причины, но составной внешний ключ никогда не проверяется для родительского ключа в главной таблице, если один или несколько столбцов ключа в дочерней таблице вставлены как null. – San

ответ

0

Вот как работает внешний ключ в Oracle. Используйте это, чтобы преодолеть этот вопрос

NOT NULL references serv (mno, ser,cp) 
+0

В Oracle это предложение показывает исключение – user2456216

1
  • вы создаете составной первичный ключ и ссылки на его дочерней таблице. Таким образом, вы создаете связь между двумя таблицами на основе комбинации ser, mno, cp. Только эта комбинация называется из патента table..it обыкновение рассматривать каждое значение отдельно

  • так, связаны две таблицы путем создания ссылочной целостности на колонке с сер и композитный ref.int на MnO & сП

Смежные вопросы