Oracle删除跳过锁定

Oracle删除跳过锁定,oracle,sql-delete,dml,Oracle,Sql Delete,Dml,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:缺少右括号 版本:Oracle1

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:缺少右括号


版本:Oracle11gXe

FOR UPDATE子句仅对顶级SQL语句有效,不对子查询有效


FOR UPDATE子句仅对顶级SQL语句有效,不对子查询有效


继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;
/ 

继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;
/ 

子查询看起来是多余的-如果您尝试从t中删除t.id('1','2')以进行更新跳过锁定,会发生什么情况?@JeffreyKemp它有语法问题,很抱歉延迟回复,在最近几天内无法访问计算机。kfinity的回答,下面。子查询看起来多余-如果您尝试从t中删除t.id('1','2')以进行更新跳过锁定,会发生什么情况?@JeffreyKemp它有一个语法问题,很抱歉延迟回复,最近几天没有访问计算机。下面是kfinity的答案。