【发布时间】:2011-08-11 16:21:13
【问题描述】:
我从未使用过 SQL 事务,就我而言,我知道我真的必须使用它们。我的应用程序的功能之一是将 Excel 文件转换为数据库。
所以我从 Excel 中获取值,使用参数构建一个字符串数组(发送到 SP),其中一些值我将直接插入到主表中,而其他值我将插入到辅助表中,然后我会得到 id,谁将代替主表中的这些值。我的意思是我有外键,这就是我这样做的原因。
所以我认为我做得很完美,但没有交易。但是,如果我在表中插入值时出现任何问题,我将不得不进行回滚。
所以在这个过程中,我使用了 5 个存储过程,每个表一个。这些 SP 并不是这个过程所独有的。它们将在 App 中用于插入记录。
但我需要有关在何处使用事务的帮助。我应该在 C#(应用程序端)还是在 SQL Server(服务器端)中执行此操作?
现在我正在使用 C# 中的 SqlTransaction 对象,它以某种方式工作,因为如果我执行回滚,他真的会取消所有插入,但我在事务中使用的 ID 不再可用。只有当我删除所有表并重新创建它们时,这些 ID 才能再次可用。
所以我认为我没有很好地使用交易,这就是为什么我需要帮助,以了解如何以及在哪里更好地使用交易。
【问题讨论】:
-
[只有当我删除所有表并再次创建它们时,这些 ID 才会再次可用。] 完全正确,这就是 IDENTITY 列的工作方式。如果你问这个,你需要去读一些书
标签: c# sql sql-server tsql transactions