2017-09-12 10 views
0

は、Oracleは、いくつかの条件で表から行を削除し、その行オラクル削除スキップは

をスキップしなければならない他のセッションおよび削除スクリプトによってロックされている実施例番号2に対して一度

DELETE from t 
WHERE t.id IN (SELECT id 
        FROM t 
       WHERE id in ('1','2') 
        FOR UPDATE SKIP LOCKED) 

ロックスキップすることができないロック欠落している右の挿入語句:

常に上記のクエリはエラー

ORA-00907で失敗しますS

バージョン:オラクル11G XE

+0

サブクエリが余計に見えます - あなたは '中のT WHERE t.idからDELETEしようとすると何が起こる( '1'、 '2')UPDATE SKIP LOCKED'か? –

+0

@JeffreyKemp構文上の問題があります。遅く返事を申し訳ありませんでした。最後の数日間、マシンにアクセスできませんでした – Naresh

+0

下記のkfinityの回答を試してください。 –

答えて

1

、私はこの句は、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; 
/