一个数据库锁方面的问题问题
我现在有一段代码
string szOutput
string ValueData
ValueData = "Something"
select ColumnName into :szOutput
From TableName where ParmName = :ValueData;
IF (boolean)
-----code
else
---- code
end if
Update TableName Set Counter = Counter + 1
where paramname = :valuedata;
很多客户端会同时运行,这个时候则取值会出现问题,因此需要在此段代码访问的时候使用独占式访问。在定义Transaction Object的时候,Lock给的是RU,更改成如下代码后同时只能启动一个客户端,产生了数据库锁死,并且应用程序提交的数据库无法被正确保存(报告正确保存,但实际上没有)
更改后的代码如下:
string szSQL
szSQL = "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE" --设置可串行化的隔离级别
Execute ...
szSQL = "begin tran"
Execute ...
select columnname from tablename where option=abc
//其他语句
update tablename set columnname = abc
szSQL = "commit tran"
Execute ...
szSQL = "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" --恢复默认的隔离级别
Execute...
请教,我怎么解决这个问题,如何给数据库正确锁,又能保证PB代码执行正确,并且可以同时启动多个实例。