【发布时间】:2018-07-13 11:53:27
【问题描述】:
当我运行多个查询时,事务是否会锁定我的表?
示例:如果另一个用户尝试在我使用事务的同时发送数据,会发生什么?
另外我怎样才能避免这种情况,还要确保所有数据都已成功插入数据库?
Begin Tran;
Insert into Customers (name) values(name1);
Update CustomerTrans
set CustomerName = (name2);
Commit;
【问题讨论】:
-
事务就是这样做的,它们锁定表。您无法避免表锁定,这是设计使然。
-
我还建议使用
TRY...CATCH和ROLLBACK,而不仅仅是没有错误处理的BEGIN TRANSACTION...COMMIT。 -
SQL Server 事务具有 ACID 属性,并且数据永远不会处于半完成状态。因此,只要您使用事务,您就不必担心数据半途而废或损坏。 SQL Server Transactions 的 ACID 属性确保“全部完成或什么都不做”。你必须信任 sql server。
标签: c# sql-server