2015-11-05 3 views
0

Почему таблица 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) 

Это сообщение об ошибке, которое я получаю при запуске таблицы alter.

Основная ошибка 0x80040E11, Minor Error 0 ALTER TABLE номер добавить иностранный ключ (Roomtype) референции RoomType (Roomtype) Invalid столбец ID. [Roomtype]

+0

любое сообщение об ошибке? –

+0

Только что добавил. Благодарю. –

+0

Не хотите ли ссылаться на существующее поле в таблице Room при добавлении внешнего ключа? Добавление ограничения внешнего ключа не добавляет поля. –

ответ

0

Перед попыткой объявить ограничение внешнего ключа необходимо добавить внешний ключ в качестве поля в таблицу 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 Roomtype nvarchar(2) NOT NULL 

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

Столбец должен существовать до того, как вы сможете 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 
+0

Заметьте, я сделал это «RoomTypeA» просто, чтобы избежать двусмысленности, вам не нужно так называть его. – granadaCoder

Смежные вопросы