我有一个任务,我必须SQL服务器:约束和外键
- 创建特定情况的实体关系图,并
- 写了SQL代码来表示图
我是SQL Server的新手,但我有一个表class
,它有一个主键CRN varchar(10)(UNN)
和两个外键,emp_id varchar(20) (NN)
,它与教师有一个强制关系,room_number varchar(5) (UNN)
也有一个与Classroom
有1强制关系。
我的表Class
代码:
CREATE TABLE class
(
CRN varchar(10) UNSIGNED NOT NULL,
emp_id varchar(20),
room_number varchar(5),
enrollment smallint UNSIGNED NOT NULL,
CONSTRAINT pk_class PRIMARY KEY (CRN),
CONSTRAINT fk_class
FOREIGN KEY (emp_id) REFERENCES instructor (emp_id),
CONSTRAINT fk_class
FOREIGN KEY (room_number) REFERENCES classroom (room_number)
);
我得到的错误是:
约束 “FK_CLASS” 已经存在; SQL语句:
CREATE TABLE类
(CRN VARCHAR(10)UNSIGNED NOT NULL,
EMP_ID VARCHAR(20),
room_number VARCHAR(5),
招生SMALLINT UNSIGNED NOT NULL,
约束pk_class PRIMARY KEY (CRN),
约束fk_class外键(EMP_ID)参考指导员(EMP_ID),
约束fk_class外键(room_number)参考教室(room_number))[90045-193]
我见过很多关于如何让表有两个外键的例子,但都没有运气。我究竟做错了什么?
每个约束必须有一个独特的名字,就像每个表都必须有唯一的名称。也许像fk_class_emp_id和fk_class_room_number呢? –
您需要为每个主键和外键约束指定一个唯一的名称。你已经将外键约束命名为同一事物。因此错误。一般来说,你的名字是太方式,太模糊和通用。但具体而言,您的FK名称应指出FK关系是什么...... FK_class_instructor和FK_class_classroom是可能的建议。 – pmbAustin