一键式点击多个可相互依赖的查询

时间:2012-09-10 11:41:29

标签: c# sql-server-2008

在我的应用程序中,我有一个表单,我只需单击一下按钮就可以执行多个数据库事务 即 当我点击按钮

查询1>>>将指定值插入指定表

查询2.>>选择查询以获取上次输入的指定的主键....即上述插入查询插入的自动编号

查询3>>使用上面的主键recvd将数据插入到另一个表中

查询4。>>使用主键

更新另一个表

如果任何查询失败或发生任何异常,则其他查询不起作用

现在我尝试使用try catch并在发生异常时删除prevoius插入...

有什么好主意,因为我是sql server 2008的新手

1 个答案:

答案 0 :(得分:1)

正如其他人所评论的那样,将所有这些操作包装到一个事务中,而不是为每个事务使用单独的事务。事务ACID属性的“原子性”部分将确保所有操作都不会成功,也不会有任何部分结果。

如果您使用的是ADO.NET,那么您将使用BeginTransactionCommit

顺便说一句,您不应该执行第2步 - 如果并发客户端在步骤1之后但在您有机会执行第2步之前插入行(并提交),该怎么办?你会得到错误的PK。最好directly get在步骤1中生成的PK。