我需要为不同的字段创建多个fk,并且每个fk均不选中,
我看到的所有示例一次只适用于1 fk,
我需要这样的东西:
ALTER TABLE contact
WITH NOCHECK ADD CONSTRAINT [FK_check5]
FOREIGN KEY (accountid) REFERENCES dbo.account ([accountid]),
WITH NOCHECK ADD CONSTRAINT [FK_check6]
FOREIGN KEY (roleid) REFERENCES dbo.role ([id])
残疾人必须在创建级别,而不是在创建级别
答案 0 :(得分:3)
将您的alter table语句分成两个
ALTER TABLE contact
WITH NOCHECK ADD CONSTRAINT [FK_check5]
FOREIGN KEY (accountid) REFERENCES dbo.account ([accountid]);
ALTER TABLE CONTACTS
WITH NOCHECK ADD CONSTRAINT [FK_check6]
FOREIGN KEY (roleid) REFERENCES dbo.role ([id]);
答案 1 :(得分:2)
“ NoCheck”将应用于您在语句中添加的所有约束,您无需重复:
下面的示例(在SQL 2012中测试):
CREATE TABLE account (accountid int, PRIMARY KEY (accountid))
GO
CREATE TABLE [role] (id int, PRIMARY KEY (id))
GO
CREATE TABLE contact (accountid int, roleid int)
GO
insert into contact values (1,1)
GO
ALTER TABLE contact
WITH NOCHECK
ADD
CONSTRAINT [FK_check5] FOREIGN KEY (accountid) REFERENCES [account] ([accountid])
,CONSTRAINT [FK_check6] FOREIGN KEY (roleid) REFERENCES [role] ([id])
如果您打算仅使用外键进行ER绘图,则可以关闭约束的强制执行。有关更多信息,请参见下面的文章。
按照文章中提供的示例:
USE AdventureWorks2012;
GO
ALTER TABLE Purchasing.PurchaseOrderHeader
NOCHECK CONSTRAINT FK_PurchaseOrderHeader_Employee_EmployeeID;
GO
话虽如此,我建议您不要在生产系统中持续进行此操作。存在外键约束是出于某种原因,以维护数据完整性。如果您以违反外键约束的方式插入数据,则可能需要查看数据设计。