update 时可以锁定表,如果我想把select 的记录也锁定不让别的进程去更新如何能做到呢?我的想法是select 记录后,我去更新这些这些记录的某个字段或者是系统字段,这样不提交的话可以保证这些记录不被别的进程更新,可是这样,有点笨,而且可能会浪费资源,各位高手有别的办法嘛。
---------------------------------------------------------------
select ... for update [of column]
---------------------------------------------------------------
在查询中不让记录被更新
要保证在统计(查询)执行过程中,记录不被其他用户更新,则可以使用For update子句进行加锁。这样在这个锁释放前其他用户不能对这些记录作update、delete和加锁。
SQL>Select daptno from dept
Where deptno=25 For update;
如果你使用了FOR UPDATE来对表进行加锁,组必须用commit来释放加锁的记录。
---------------------------------------------------------------
select * from tb for update;