【发布时间】:2010-08-06 20:38:13
【问题描述】:
我有一个方法
void SaveApplicationData()
{
begin transaction
update
insert
commit transaction
}
如果两个用户同时调用这个方法,这两个数据库事务可以同时运行吗?
【问题讨论】:
标签: transactions concurrency oracle10g
我有一个方法
void SaveApplicationData()
{
begin transaction
update
insert
commit transaction
}
如果两个用户同时调用这个方法,这两个数据库事务可以同时运行吗?
【问题讨论】:
标签: transactions concurrency oracle10g
大量事务可以同时运行。但是,如果它们更新相同的行,它们很可能存在锁定问题,并且可能会回滚一个或多个。 (我已经很久没有处理冲突的交易了。)
【讨论】:
是的,它们可以同时运行
【讨论】:
确保使用正确的Isolation Level
【讨论】:
不,它不能同时运行。假设你有一个账户有 k 美元,在第一次交易中你要求提取 k 美元,在第二次交易中你要求相同。您将获得 2 k 美元,因为您同时进行了交易,并且您的账户余额显示两次交易均为 k 美元。所以避免这种情况,我认为他们使用同步。没有完成第一笔交易,你不能去第二个,如果你去,你必须等到第一个完成。
【讨论】: