在可能插入多行的数据库插入语句中,如果在第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. 将mysql插入语句转换为sql server插入语句?
- 2. SQL Server:插入INTO语句语法
- 3. 使用case语句插入值SQL Server
- 4. asp.net SQL Server插入语句tidyup +错误
- 5. Visual Studio SQL Server插入语句
- 6. SQL插入语句
- 7. sql插入语句语法
- 8. SQL SERVER插入使用插入多行到选择语句
- 9. SQL插入C语句#
- 10. 未插入SQL语句
- 11. Cakephp插入sql语句
- 12. OleDb SQL插入语句
- 13. SQL语句数据插入
- 14. 插入SQL语句错误
- 15. 循环SQL语句插入
- 16. 插入语句
- 17. SQL SERVER 2008:尝试使用1个SQL语句插入多行
- 18. 插入语句2005
- 19. SQL server T-SQL语句
- 20. 如何在sql server中编写动态插入语句?
- 21. 在SQL Server 2005的插入语句中使用子查询
- 22. 继续SQL Server系列从Select语句插入,尽管错误
- 23. 的SQL Server +插入SELECT语句的值到表
- 24. 带有更新语句的SQL Server 2005插入触发器
- 25. 在针对SQL Server 2008运行时插入语句失败
- 26. 如何使用SELECT INTO语句插入自动递增? SQL SERVER
- 27. SQL Server中的C#插入语句错误
- 28. 如何在插入语句SQL Server中设置订单计数?
- 29. 连接在SQL Server上用并行插入语句耗尽
- 30. 简单插入语句中的SQL Server缓慢
你有一个确切的例子吗?发布示例查询... – 2010-01-27 00:45:25