在可能插入多行的數據庫插入語句中,如果在第1行(很多)中有錯誤,我將如何知道確切的錯誤是什麼 - 哪一行和哪一列?有任何想法嗎?SQL Server插入語句
回答
如果發生錯誤,事務將被回退,並且不會插入行。
即使您沒有使用begin transaction
明確啓動事務,SQL Server也不會在事務外運行insert
語句。默認情況下,它會爲您啓動一個並在每個語句後提交。在自動提交中查看此MSDN article。
找出確切行,你可以插入他們一次一個,也許使用臨時表:
select * into #tmp from <YourInsertQuery>
while @@rowcount > 0
begin
insert into TargetTable
select top 1 *
from #tmp tmp
where not exists (
select *
from TargetTable tt
where tt.id = tmp.id
)
order by id
end
一旦失敗,頂行中#tmp
這不是在TargetTable
導致錯誤。
我想知道錯誤發生的位置 - 如果我插入5行,如果第4行有問題,我需要找出第4行失敗,並且如果可能的話,哪個列有問題 – 2010-01-27 00:46:47
首先它取決於你得到的錯誤。有很多錯誤可以發生,沒有特定的錯誤行。但讓我們考慮一下,錯誤是由特定行引起的約束違規。在這種情況下,行插入在一起的事實意味着它們是單個事務更新,所以它們都必須成功,否則都必須失敗,通常插入一半行是沒有意義的,因爲它會使數據庫不一致。
Finaly讓我們考慮一致性不是問題,你真的只想插入可以成功的行。在這種情況下,您應該查看錯誤消息,因爲它會指示出現問題。如果是主要約束違規,那麼問題與重複鍵一致。檢查約束,然後是檢查失敗的行。通過檢查錯誤信息,檢查目標表並檢查要插入的候選行,可以揭示罪魁禍首。
如果您想自動執行進程並在發生約束失敗後繼續執行,您別無選擇,只能一次插入一行。在這種情況下,失敗只會發生一行,這就是問題所在。
- 1. 插入語句SQL Server
- 2. 將mysql插入語句轉換爲sql server插入語句?
- 3. SQL Server:插入INTO語句語法
- 4. 功能插入語句在SQL Server中
- 5. Visual Studio SQL Server插入語句
- 6. 使用case語句插入值SQL Server
- 7. SQL Server插入。 。 。執行語句
- 8. asp.net SQL Server插入語句tidyup +錯誤
- 9. SQL插入語句
- 10. sql插入語句語法
- 11. SQL SERVER插入使用插入多行到選擇語句
- 12. SQL Server插入語句以在表中插入長文本
- 13. SQL語句插入語句爲空?
- 14. SQL插入C語句#
- 15. 循環SQL語句插入
- 16. OleDb SQL插入語句
- 17. 插入SQL語句錯誤
- 18. 批量插入SQL語句
- 19. SQL語句數據插入
- 20. 短Sql插入語句?
- 21. SQL插入語句錯誤
- 22. 未插入SQL語句
- 23. Cakephp插入sql語句
- 24. SQL插入SELECT語句
- 25. 將SQL語句插入到SQL Server列中
- 26. SQL SERVER 2008:嘗試使用1個SQL語句插入多行
- 27. 插入語句
- 28. 插入語句
- 29. 在單個sql語句中插入和更新sql語句
- 30. SQL server T-SQL語句
你有一個確切的例子嗎?發佈示例查詢... – 2010-01-27 00:45:25