请问有关update锁定的问题
我有一个页面的要提交update(多用户的) 
 我想问一下 
 带where的update在SQLSERVER里执行的时候是不是会分解成select,delete和insert, 
 它是一个原子操作吗?或者说: 
 update的排它锁是在select开始时就启用的吗?   
 比如多用户时,update   tbl   set   f1   =   f1   -1   where   f1   >    0   会不会导致问题. 
 或者update   tbl   set   f1   =   f1   -1   where   id   in   (select...)这样又会不会有问题.   
 还有就是,建立在update某表之上的对其他表进行更新的触发器能够保证在其他用户的update提交之前被执行吗?   多谢!
------解决方案--------------------1、原子操作   
 2、不会有问题   
 3、能够保证
------解决方案--------------------更新时是排它锁,更新一行后,如果事务未提交,其它连接再不能查询到此行。   
 采用什么锁主要看事务的关连性。 
 如果A 事务对表更新后,还要统计表的数据,用行锁肯定不行。必须用表锁。  
 否则 如果用行锁,事务B 更新后会影响后续的统计数据。   
 试了一下,感觉是这样,对锁定, 
 A的 update的事务提交前会对锁定的记录临时保存未update与update完的数据记录 
 这时如果有其它连接的B -update,update的where除检索未锁定的记录外,还会检索临时保存的记录,如临时保存的记录在where的检索条件之内,则会等A 事务提交后再接着执行,如临时保存的记录未在where的检索条件之内,则会直接update未被锁定的记录数据。