update或delete语句里含有子查询时,子查询里的表不能在update或是delete语句中,如含有运行时会报错:但select语句里含有子查询时,子查询里的表可以在select语句中. 如:把总成绩小于100的学生名称修改为天才 select stu_id from score group by stu_id having sum(grade)<100; #查询总成绩小于100的学生IDupdate students set name='天才' where id in (select s…
Select…For Update语句的语法与select语句相同,只是在select语句的后面加FOR UPDATE [NOWAIT]子句. 该语句用来锁定特定的行(如果有where子句,就是满足where条件的那些行).当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止. 加锁程式在准備修改某些資料時需先用SELECT * FROM tablename WHERE condition FOR UPDATE 來锁住…
示例: DATA: wa_t001 type t001. select single for update * into wa_t001 from t001 where bukrs = '1000'. 解释: select single for update,where条件必须涵盖所有主键. 执行时,该语句会锁定满足条件的单条数据(在SM12中是看不到的). 锁定退出条件:执行到commit或rollback. 补充: 如果有其他的select single for update访问到同样的数据…