我正在做一个存储过程,其中多个表插入和更新依赖于它们之前的插入。我是否需要做任何事情来确保这些操作完成(如提交),或者插入存储过程中,调用总是完成并按顺序完成,而我什么也不担心?第二个sql调用依赖于另一个
4
A
回答
2
你担心什么,你就需要去关注的,如果说你正在创建一个永久表(非临时/非变量表),并打算做镶入的唯一方案它之后。要通过运行时错误指示表不存在,您必须在创建表之后但在插入记录之前放置“GO”。之后,您可以使用“GO”命令确保所有过程命令都已完成,然后再继续执行任何代码,但在大多数情况下不需要。如果你执行一个插入,然后在插入完成之后不应该评估更新逻辑后立即执行更新,但是如果你想额外确定一下,只需在它们之间插入一个“GO”,然后就可以毫无疑问。
1
如果您有几条语句,并且要确保它们全部完成,或者没有一条完成,那么您应该使用事务。插入或更新语句可能会失败的原因很多,因此检查是一个好主意。
在您发言前使用BEGIN TRANSACTION
,之后使用COMMIT TRANSACTION
。如果您想取消批次中已完成的任何工作,也可致电ROLLBACK TRANSACTION
。
将这些语句包装在TRY/CATCH
块中以尝试正常处理任何错误。
BEGIN TRY
BEGIN TRANSACTION
--insert/update statements go here
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH
相关问题
- 1. C++每个类依赖于第二个
- 2. 依赖属性依赖于另一个
- 3. 依赖于另外一个
- 4. 依赖于第一个选择选项更改第二个选择选项
- 5. Ruby on Rails关系降低倾向第二个依赖于第一个
- 6. 添加依赖于第一个的第二个类型的错误
- 7. 属性依赖于另一个字段
- 8. 函数依赖于另一个函数
- 9. 微调依赖于另一个微调android系统
- 10. SQL rand()依赖于另一列?
- 11. 如何使用依赖于另一个jar的一个jar
- 12. Android:RxJava与OkHttp:如何使第二次调用是依赖于第一?
- 13. 将数据插入两个表,一个依赖于另一个
- 14. 与第二个查询Faceing问题,它是依赖于第一查询
- 15. 如何使一个项目的jar依赖于另一个jar
- 16. 如何开发宝石,其中一个依赖于另一个
- 17. 如何使一个nsi部分依赖于另一个?
- 18. 如何使一个自定义状态依赖于另一个?
- 19. 使用第二个按钮调用另一个方法
- 20. 依赖于依赖于SQL中另一列的子查询的列
- 21. 在另一个函数中调用第二个函数
- 22. getline()不能用于第二个调用
- 23. Spring批处理并行处理两个任务,但第二个任务依赖于第一个任务
- 24. 如何开发这个依赖于另一个ListView的ListView?
- 25. 如何基于第一个微调器和第二个微调器来填充第二个微调器?
- 26. 2个相同值纺纱如何依赖于一个离心器隐藏在第二微调该值
- 27. 如何使用Gradle构建依赖于另一个JAR的JAR
- 28. 使用依赖于另一个库的库的CMake项目
- 29. 删除XML的依赖于另一个节点ID使用XSL
- 30. Java构造函数需要一个依赖于依赖于第一个构造函数的另一个构造函数的条件。 (蛇咬尾)
好点,你应该总是有适当的错误处理来补偿运行时错误/失败,但是在干净的场景中,SQL操作按照它们写入的顺序完成。这就是为什么它是一种脚本语言,而不是面向对象。 – 2013-02-11 15:24:12
感谢你们俩。由于缺少处理该数据库的错误,因此我需要更多地使用提交。 我认为'去'声明会给我一些想法,但它听起来像我不需要它。 – KenK 2013-02-11 15:36:06
我是新来的stackoverflow-我应该标记为答案或只有最相关? – KenK 2013-02-11 15:37:31