我试图在一个表的两列上创建一个外键,指向另一个表的同一列,但我似乎遇到了错误。
我正在使用SQL Server和Microsoft SQL Server Management Studio。
这就是我的所作所为:
CREATE TABLE House
(
hid INTEGER PRIMARY KEY,
hname VARCHAR(32) NOT NULL,
address VARCHAR(128) NOT NULL,
);
CREATE TABLE Room
(
sid INTEGER,
hid INTEGER FOREIGN KEY REFERENCES House(hid),
rname VARCHAR(32) NOT NULL,
CONSTRAINT sid_pk PRIMARY KEY(sid, hid)
);
CREATE TABLE Seat
(
hid INTEGER,
sid INTEGER,
plid INTEGER,
row INTEGER NOT NULL,
seat INTEGER NOT NULL,
CONSTRAINT sid_fk
FOREIGN KEY (hid, sid) REFERENCES Room(hid, sid), <-- Here's the error
CONSTRAINT plid_pk
PRIMARY KEY (hid, sid, plid),
UNIQUE(hid, sid, row, seat)
);
我一直在&#34;错误1776&#34;说房间里没有主键......
答案 0 :(得分:0)
根据来自@ hogan的帖子。作为社区维基发布,这样就不会丢失
在Room
表中,主键为(sid, hid)
..但在seat
表格中,您引用了新的主键Room(hid, sid)
所以改变你的room
表约束定义,如下所示
CONSTRAINT sid_fk
FOREIGN KEY (hid, sid) REFERENCES Room(sid,hid)