我有一个必须
的作业我是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,
CONSTRAINT pk_class PRIMARY KEY(CRN),
CONSTRAINT fk_class FOREIGN KEY(emp_id)REFERENCES讲师(emp_id),
CONSTRAINT fk_class FOREIGN KEY(room_number)参考教室(room_number))[90045-193]
我已经看到很多不同的例子,说明如何让一个表有两个外键,但没有运气。我做错了什么?
答案 0 :(得分:3)
Contraints必须具有唯一名称,并且您使用名称fk_class
两次。因此,命名一个fk_instructor
和另一个fk_classroom
应该可以解决问题。
请注意,有一个较短的符号,可避免此类问题:
CREATE TABLE class (
CRN varchar(10) PRIMARY KEY,
emp_id varchar(20) references instructor (emp_id),
room_number varchar(5) REFERENCES classroom (room_number),
enrollment smallint UNSIGNED NOT NULL
);