2015-06-29 2 views
2

Как изменить существующий столбец от bit к внешнему ключу (int)?Изменение столбца на внешний ключ

Например, колонка NEW_B была создана так:

ALTER TABLE [dbo].[APPLICATION] 
ADD [NEW_B] [bit] NULL 
GO 

Но теперь я хочу, чтобы NEW_B ссылаться на столбец ID (INT) таблицы ATTACHMENT (хотите сохранить имя NEW_B, также позволяют NULLs).

+1

Первый изменить таблицу и установить тип столбца INT, а затем добавить ограничение внешнего ключа. – jarlh

ответ

2

Синтаксис:

--alter existing column to int 
ALTER TABLE [dbo].[APPLICATION] ALTER COLUMN [NEW_B] INT NULL 
GO 

--add foreign key constraint 
ALTER TABLE [dbo].[APPLICATION] WITH CHECK ADD CONSTRAINT [FK_APPLICATION_ATTACHMENT] FOREIGN KEY([NEW_B]) 
REFERENCES [dbo].[ATTACHMENT] ([ID]) 
GO 

ALTER TABLE [dbo].[APPLICATION] CHECK CONSTRAINT [FK_APPLICATION_ATTACHMENT] 
GO 
+0

Спасибо, пожалуйста, также объясните, что делает 'WITH CHECK' (я думаю, вы не можете ссылаться на несуществующие идентификаторы?) И почему нужен третий оператор (' ... CHECK CONSTRAINT ... ')? – przno

+0

Вы можете пропустить последний чек. Он генерируется 'ssms'. Вы можете прочитать об этом, например, здесь http://stackoverflow.com/questions/529941/with-check-add-constraint-followed-by-check-constraint-vs-add-constraint –

+0

Нашли ответы [здесь] (http : //dba.stackexchange.com/questions/24297/alter-table-check-constraint). В моем конкретном случае я буду использовать 'WITH NOCHECK'. – przno

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