主键SQL中的两个属性(引用此键的外键)

时间:2014-03-30 17:33:04

标签: sql database oracle foreign-keys primary-key

我创建表时遇到SQL问题。 例如:

/* lekovi */
create table lekovi
(
    kid number(5),
    Isifra number(10),
    lime varchar2(50),
    sostav varchar2(500),

    primary key (kid, Isifra),
    foreign key (kid) references kompanii (kid)
)

/* recepti */
create table recepti
( 
    kid number(5),
    Isifra number(10),
    dembg number(13),
    pembg number(13),
    datum varchar2(50),
    doza varchar2(500),

    primary key (kid, Isifra, dembg, pembg), <---
    foreign key (kid, Isifra) references lekovi (kid, Isifra), <---
    foreign key (dembg) references doktori (dembg),
    foreign key (pembg) references pacienti (pembg)
)

我有两张表lekovirecepti

在表格lekovi中,我有主键(kid, Isifra)。当我从recepti引用时(在代码中用&lt; ---标记)我有问题,因为我展示了两个单独的键而不是复合词。 SQL是用ORACLE编写的。

如何用键解决这个问题?

1 个答案:

答案 0 :(得分:0)

  
    

如何将复合外键从“recepti”引用到“lekovi”?

  

正如你所做的那样。外键应具有与引用键相同的列内容(列数和位置/数据类型)。

SQL> create table lekovi (
  2  kid number(5),
  3  Isifra number(10),
  4  lime varchar2(50),
  5  sostav varchar2(500),
  6  primary key (kid, Isifra)
  7  )
  8  /

Table created.

SQL> create table recepti (
  2  kid number(5),
  3  Isifra number(10),
  4  dembg number(13),
  5  pembg number(13),
  6  datum varchar2(50),
  7  doza varchar2(500),
  8  primary key (kid, Isifra, dembg, pembg),
  9  foreign key (kid, Isifra)
 10  references lekovi (kid, Isifra)
 11  )
 12  /

Table created.