Когда вы создаете ограничение внешнего ключа в таблице и создаете script в MS SQL Management Studio, оно выглядит следующим образом.
ALTER TABLE T1 WITH CHECK ADD CONSTRAINT FK_T1 FOREIGN KEY(project_id)
REFERENCES T2 (project_id)
GO
ALTER TABLE T1 CHECK CONSTRAINT FK_T1
GO
Я не понимаю, какая цель имеет второй вариант с контрольным ограничением. Не создает ли ограничение FK достаточно? Вам нужно добавить ограничение проверки, чтобы гарантировать целостность ссылки?
Другой вопрос: как он будет выглядеть тогда, когда вы напишете его прямо в определении столбца?
CREATE TABLE T1 (
my_column INT NOT NULL CONSTRAINT FK_T1 REFERENCES T2(my_column)
)
Разве этого недостаточно?