我有一个脚本可以生成添加语句以添加(在我的情况下重新添加)外键。
我运行这个脚本并获取语句。在此之后,我运行一个将删除外键的脚本。
完成后,我想运行添加外键语句来重新添加它们。
当我按照上述顺序运行我的脚本时,它可以工作!删除外键后,我可以运行 add 语句并按预期添加所有内容。
但是,在我获取添加语句并删除外键之后,我想截断表并进行批量复制,然后重新添加外键。但是这样做失败了。
重新添加外键时出现的错误如下:
System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的第一次机会异常
附加信息:ALTER TABLE 语句与 FOREIGN KEY 约束“FK_Order_Details_Orders”冲突。冲突发生在数据库“Northwind2”、表“dbo.Orders”、列“OrderID”中。
我的重新添加语句如下所示:
USE Northwind2;
ALTER TABLE [dbo].[Products] WITH CHECK
ADD CONSTRAINT [FK_Products_Categories]
FOREIGN KEY([CategoryID]) REFERENCES [dbo].[Categories] ([CategoryID])
ALTER TABLE [dbo].[Products] CHECK CONSTRAINT [FK_Products_Categories]
ALTER TABLE [dbo].[Orders] WITH CHECK
ADD CONSTRAINT [FK_Orders_Customers]
FOREIGN KEY([CustomerID]) REFERENCES [dbo].[Customers] ([CustomerID])
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Customers]
ALTER TABLE [dbo].[CustomerCustomerDemo] WITH CHECK
ADD CONSTRAINT [FK_CustomerCustomerDemo_Customers]
FOREIGN KEY([CustomerID]) REFERENCES [dbo].[Customers] ([CustomerID])
ALTER TABLE [dbo].[CustomerCustomerDemo] CHECK CONSTRAINT [FK_CustomerCustomerDemo_Customers]
(and so on and so forth......)
为什么会失败?另外,为什么它会在那个特定点失败?如果我在异常发生后查看数据库,我可以看到添加了其他外键。有没有解决的办法?任何帮助,将不胜感激!