【发布时间】:2017-06-17 12:43:36
【问题描述】:
我有一个必须完成的任务
- 创建特定情况的实体关系图,并
- 编写 SQL 代码来表示图表
我是 SQL Server 的新手,但我有一个表 class,它有一个主键 CRN varchar(10)(UNN) 和两个外键,emp_id varchar(20) (NN) 与讲师有 1 个强制关系,room_number varchar(5) (UNN) 也有1 与Classroom 的强制关系。
我的表格代码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 语句:
创建表类
(CRN varchar(10) UNSIGNED NOT NULL,
emp_id varchar(20),
房间号 varchar(5),
注册 smallint UNSIGNED NOT NULL,
约束 pk_class 主键 (CRN),
CONSTRAINT fk_class FOREIGN KEY (emp_id) REFERENCES 讲师 (emp_id),
约束 fk_class 外键 (room_number) 参考教室 (room_number) ) [90045-193]
我见过很多不同的例子,说明如何让一个表有两个外键,但都没有运气。我做错了什么?
【问题讨论】:
-
每个约束必须有一个唯一的名称,就像每个表都必须有一个唯一的名称一样。可能是 fk_class_emp_id 和 fk_class_room_number 之类的?
-
每个主键和外键约束都需要一个唯一的名称。您已将两个外键约束命名为相同的东西。因此错误。你的名字一般来说太模糊和笼统了。但具体来说,你的外键名称应该表明外键关系是什么... FK_class_instructor 和 FK_class_classroom 是可能的建议。
标签: sql sql-server foreign-keys constraints