我有一個任務,我必須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