У меня есть эти таблицы:ссылается внешний ключ, который является первичным ключом с другим ключом на родительской таблице
create table t_table(t1 int, constraint tprim primary key(t1));
create table parent_table(t1 int, p1 int, p2 int, constraint pprim primary key(t1, p1));
create table child_table(t1 int, c1 int, p1 int, constraint cprim primary key(t1, c1), constraint fchild foreign key (p1) references parent_table(p1));
я получаю эту ошибку при создании второй таблицы:
ORA-02270: no matching unique or primary key for this column-list
p1
в parent_table не уникален, поэтому я не могу сделать его уникальным для решения проблемы.
В этом случае, как сказать, что p1
является внешним ключом в дочерней таблице, которая ссылается на parent_table (p1)?
благодарит заранее.
пожалуйста, что вы имели в виду 'Может быть, то, что вы хотите сделать, это включить t1 внешнего ключа к child_table?', Вы имеете в виду в том же ограничение внешнего ключа (с p1), если это так, как это возможно, если два ключа принадлежат к разным таблицам? –
@ youzking - они не принадлежат к разным таблицам. (t1, p1) в ссылках child_table (t1, p1) в parent_table - даже если ни один t1 сам по себе, ни p1 не являются PK для parent_table. Пара первичного ключа IS и что вам разрешено ссылаться на child_table. – mathguy
о да, конечно, потому что t1 был первым первичным ключом в t_table, я представляю себе, что он принадлежит t_table, я забыл, что это было одно и то же имя в child_table. большое спасибо. –