为什么不接受外键?

Why is the foreign key not accepted?

为什么 table Room 不接受外键?

CREATE TABLE RoomType (
Roomtype nvarchar(2) NOT NULL,
Description nvarchar(20),
Responsibility nvarchar(20),
primary key (Roomtype)
)

Create table Room (
RoomID nvarchar(2) NOT NULL,
Capacity numeric(3)
)
ALTER TABLE Room 
add foreign key(Roomtype)
references RoomType(Roomtype)

这是我在 运行 更改 table 时收到的错误消息。

Major Error 0x80040E11, Minor Error 0 ALTER TABLE Room add foreign key(Roomtype) references RoomType(Roomtype) Invalid column ID. [ Roomtype ]

在尝试声明外键约束之前,您需要将外键作为字段添加到 Room table。

CREATE TABLE RoomType (
Roomtype nvarchar(2) NOT NULL,
Description nvarchar(20),
Responsibility nvarchar(20),
primary key (Roomtype)
)

Create table Room (
RoomID nvarchar(2) NOT NULL,
Capacity numeric(3)
)

ALTER TABLE Room
ADD Roomtype nvarchar(2) NOT NULL

ALTER TABLE Room 
add constraint FK_Give_Me_A_Good_Name foreign key(Roomtype)
references RoomType(Roomtype)

该列必须存在才能 FK 到它。

CREATE TABLE RoomType (
Roomtype nvarchar(2) NOT NULL,
Description nvarchar(20),
Responsibility nvarchar(20),
primary key (Roomtype)
)

Create table Room (
RoomID nvarchar(2) NOT NULL,
Capacity numeric(3),
RoomtypeA nvarchar(2) NOT NULL
)

ALTER TABLE [dbo].[Room] ADD CONSTRAINT FK_MyName FOREIGN KEY (RoomtypeA) REFERENCES dbo.Roomtype (Roomtype) 
GO