关于一个SQL的问题,是否需要上锁?
我简单说一下我程序是上怎么写的吧。
string ohtml="";
for(int i==0 ;i<5;i++)
{
ohtml+= op(i) + "|";//op函数为获取表A字段zd=0的数据
setopstate(i);//设置表A字段zd=1的数据
}
这里ohtml 会获取的同样的数据,只是偶尔,我不知道怎么回事
op函数里涉及的sql
select * from A where zd=0 and id= " + i + "
setopstate函数里涉及的sql
update A set zd=1 where id=" + i + "
就是以上问题 sql
[解决办法]
默认隔离级别就够了,但是你那update语句貌似比较低效哦,容易造成性能问题
[解决办法]
查询的时候自动用上共享锁,更新时一般用上独占锁或排它锁。
象你这种语句可以简化,没必要用循环去每次查询或更新一次,应该可以一次性完成。
[解决办法]
默认情况下,读数据就会加共享锁,改数据就会加排它锁,不用你加,除非你很熟悉,不然不建议更改这些操作
[解决办法]