2017-05-15 164 views
1

我有一個#table中的數據包含特定行,我需要將所有這些行插入到原始數據庫表中。我寫的查詢,如下在插入並在SQL Server中繼續插入時忽略SQL錯誤例外

insert into tbl_user select * from #tblExcelData 

#tblExcelData包含要在tbl_user插入多行。

但是,由於一行外鍵異常引起的插入被觸發,並且插入之後停止。

我想繼續插入其他行。沒有插入錯誤的行是沒有被插入,但其他行應該繼續。

在SQL Server中有沒有辦法做到這一點?

+0

您可以直接修改您的查詢了一下,以排除那些已經在tbl_user。 –

+0

TSQL語句是原子的。聲明成功並且所有相應的行都受到影響 - 或者沒有任何影響。如果你想要這個級別的控制,你可以使用遊標。 SSIS是另一種選擇,它允許你從excel文件中將行加載到你的表中,並單獨處理錯誤。請記住,您可能有許多不同類型的錯誤 - 假設外鍵問題是唯一可能的錯誤並不安全。 – SMor

回答

3

據我所知,你不能;一個DML語句被完全執行或根本不執行,並且在發生錯誤的情況下它根本就不是。

你可以(也應該)做的是隻選擇你的數據你可以插入。

喜歡的東西:

insert into tbl_user 
select * 
from #tblExcelData x 
inner join tbl_with_FK y 
     on y.PK = x.FK