如何创建双外键

时间:2015-05-20 14:48:11

标签: mysql

我必须创建一个表格结构是什么

create table reparto
(
numrep integer,
nomespec varchar(20),
nomeosp varchar(20),
cittaosp varchar(25),
primary key (numrep,nomespec,nomeosp,cittaosp),
foreign key(nomeosp,cittaosp) references ospedale(nomeosp,cittaosp),
foreign key nomespec references specializzazione(nomeospe)
);

当然我已经创建了表格

create table ospedale
(
nomeosp varchar(20),
cittaosp varchar(25),
numasl integer,
idasp varchar(4),
primary key(nomeosp,cittaosp)
);

create table specializzazione
(
nomespe varchar (20) primary key
);

当然它不起作用,我不知道该怎么做,有人可以告诉我如何创建几个不同的外键吗?

2 个答案:

答案 0 :(得分:0)

我们可以在这里指出一些明显的事情。外键定义中给出的列名:

references specializzazione(nomeospe)
                                ^

与表定义

中的列名不匹配
... specializzazione ( nomespe ...
                       ^^^^^^^ 

外键的列列表应该包含在parens

... foreign key (nomespec)
                ^        ^

答案 1 :(得分:0)

你有一些文字错误和incorect订单创建表请检查:

create table specializzazione
(
nomespe varchar (20) primary key
);

create table ospedale
(
nomeosp varchar(20),
cittaosp varchar(25),
numasl integer,
idasp varchar(4),
primary key(nomeosp,cittaosp)
);

create table reparto
(
numrep integer,
nomespec varchar(20),
nomeosp varchar(20),
cittaosp varchar(25),
primary key (numrep,nomespec,nomeosp,cittaosp),
foreign key(nomeosp,cittaosp) references ospedale(nomeosp,cittaosp),
foreign key (nomespec) references specializzazione(nomespe)
);