oracle是否允许从具有某些条件的表中删除行并跳过锁定的一次
DELETE from t
WHERE t.id IN (SELECT id
FROM t
WHERE id in ('1','2')
FOR UPDATE SKIP LOCKED )
例如,id 2被其他会话锁定,删除脚本应该跳过该行
上述查询始终 失败,错误
ORA-00907:缺少右括号
版本:Oracle 11G XE
答案 0 :(得分:2)
FOR UPDATE
子句仅对顶级SQL语句有效,而不对子查询有效。
http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_10002.htm#SQLRF55370
答案 1 :(得分:1)
跟进Jeffrey的回答,我相信这个子句旨在用于PL / SQL块。所以你可以试试这个,例如:
begin
for r in (select rowid as rid from t for update skip locked)
loop
delete from t where rowid = r.rid;
end loop;
end;
/