簡體   English   中英

在SQL Server中插入帶有違規的記錄

[英]Insert Records with Violations in SQL Server

我想將以下格式的5000條記錄填充到特定表中。

Insert into @Table 
(c1,c2,c3,c4,c5)
Values 
(1,2,3,4,5),
(2,2,3,4,5),
(3,2,3,4,5),
(4,2,3,4,5),
(5,2,3,4,5)
....
....
Up to 1000 rows

當我嘗試執行它時。 我遇到了外鍵違反。 我知道原因,因為其中一個值在其對應的父表中不存在。

很少有記錄導致這種違規。 在1000行中很難找到那些違規的行,因此我想至少將有效記錄插入到我的目標表中,而使違規的行保持現在的狀態。

我不確定如何執行此操作。 請給我建議任何想法。

禁用外鍵或修復您的數據。

查找不良數據很簡單-您始終可以將其臨時插入到緩沖區表中,然后運行查詢以查找相關表中缺少的數據。

如果這是一次性的事情,那么您可以執行以下操作:

刪除FK約束

ALTER TABLE MyTAble
  DROP CONSTRAINT FK_Contstraint
GO

執行插入

查找沒有匹配的父ID的記錄。

SELECT * FROM MyTable MT WHERE NOT EXISTS (SELECT 1 FROM ParentTable PT WHERE MT.ParentId = PT.ID)

刪除這些記錄或對它們進行其他處理。

重新創建FK約束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM