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

zi8p0yeb  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(163)

创建表时遇到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引用时(在代码中用〈---标记),我遇到了问题,因为我显示了两个单独的键,而不是作为一个组合。SQL是用ORACLE编写的。
如何用钥匙解决这个问题?

ljsrvy3e

ljsrvy3e1#

如何将复合外键从“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.

相关问题