当我运行多个查询时,事务会锁定我的表吗?
示例:如果另一个用户在尝试使用交易的同时尝试发送数据,会发生什么?
我又如何避免这种情况,又要确保所有数据都已成功插入数据库中?
Begin Tran;
Insert into Customers (name) values(name1);
Update CustomerTrans
set CustomerName = (name2);
Commit;
答案 0 :(得分:0)
您无法避免多个用户将数据加载到数据库。每次有单个用户请求使用表时锁定都既不可行也不明智。实际上,您不必担心,因为数据库本身将提供避免此类问题的机制。我建议您阅读ACID属性。
可能会发生的情况是,您可能会遭受重影读取,这基本上包括您无法读取数据,除非要插入数据的用户提交。而且即使您已完成数据插入并没有提交,也很可能看不到更改。
DDL操作(例如创建,删除等)本身在最后提交。但是,DML操作(例如更新,插入,删除等)不会在最后提交。
答案 1 :(得分:0)
您必须巧妙地实现交易。以下是一些与性能有关的要点:-
这些是您可以做的几点。