sql server2000高手看下

来源:百度知道 编辑:UC知道 时间:2024/05/19 23:31:23
update delete 和 insert 语句执行时 锁都是自动加的吗 还是必须要加上事务才加锁 他们执行时不都是加的独占锁吗 begin tran
update Mobbile set num=num+5 where color='白'
WaitFor delay '00:00:20'
rollback tran
那我这样写 为什么在另一个用户里执行insert 语句的时候很快 不用等这20秒呢? 小弟菜鸟 有什么说错地方请高手见谅!
我是放在查询分析器里执行的! 感谢1楼 不过我都是放T-SQL里执行的! 你可以4下

sql server 的锁是自动管理的,事务是最小的原子单位,即是在begin train
commit train/rollback train之间只做一次提交,结果是要么全部执行成功要么全部执行失败
在另一个用户里执行insert 语句的时候很快 不用等这20秒是insert 语句的时候没有调用这个事务,你将这个事务放到查询分析器执行是要20秒的
楼主,我建议是你看下sql server锁机制,因为你insert的记录是新的跟color='白' 没有关系,如果你在这个时候再去update Mobbile set num=num+5 where color='白' 肯定是需要等待的

在用户有sql请求时,系统分析请求,自动在满足锁定条件和系统性能之间为数据库加上适当的锁,同时系统在运行期间常常自动进行优化处理,实行动态加锁。对于一般的用户而言,通过系统的自动锁定管理机制基本可以满足使用要求,但如果对数据安全、数据库完整性和一致性有特殊要求,就需要了解sql server的锁机制,掌握数据库锁定方法

insert和update的 时候你的意思是它应该对这个对进行锁定吗?那样的话才会出现你所说的等待吧!sqlserver对表进行锁定了吗?