制約に違反しないレコードに対してのみ、ユニークな制約に違反するOracleクエリを実行する必要があります。 MySQLでは、これはignoreコマンドを使用して実行できると思います。 Oracleには同等の機能がありますか?OracleのMySQLアップデートには無視されます
答えて
あなたはこのために、Oracleのエラーログ機能を使用することができます。
まずあなたが後で無視行が含まれるテーブルを作成する必要があります。
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('YOUR_TABLE', 'YOUR_TABLE_ERROR_LOG');
という名前のテーブルのYOUR_TABLE_ERROR_LOG
と呼ばれるテーブルを作成することYOUR_TABLE
(明らかにこれは一度だけ行う必要があります)。あなたのUPDATEを実行すると
あなたはLOG ERRORS
句を追加する必要があります。
UPDATE your_table
SET ...
WHERE ...
LOG ERRORS INTO YOUR_TABLE_ERROR_LOG ('UPDATE running at '||to_char(sysdate, 'yyyy-MM-dd HH24:MI:SS'))
REJECT LIMIT UNLIMITED;
にエラーが発生したアクションを識別するのに役立ち、任意の値が指定された文字列。
更新後、テーブルYOUR_TABLE_ERROR_LOGを照会して、発生したエラーとその理由を確認できます。エラーに関心がない場合は、後でエラーログテーブルを切り捨ててください。この目的のために使用することができCHANGE_DUPKEY_ERROR_INDEX
という名前の新しいヒントがあるのOracle 11.2以降
http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_10008.htm#BCEFBFCD
編集 2014年10月27日
:詳細については
は、マニュアルを参照してください。私はこれを試みたことはありません。マニュアルで
詳細:INSERT
操作について http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements006.htm#CHDIFFJE
IGNORE_ROW_ON_DUPKEY_INDEX
という名前の同様のヒントがあります:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements006.htm#CHDEGDDG
いくつかの例は:
いいえ(Oracleは大きい)とはっきりと言うのは難しいですが、15年間のデータベースプログラミングでは、これほどOracleのような機能は見たことがありません。制約を無効にすることはできますが、これはここで達成しようとしているのと同じことではありません。
行ごとに更新する表を処理するPL/SQLを作成し、更新を試行し、エラーを取り除く方法があります。それは効率的ではありませんが、うまくいくでしょう。しかし、私が想像することのできるすべてのシナリオでは(非常に複雑なテーブルがない限り)、更新クエリを記述して制約を回避する適切なサブクエリを含めることができます。正確な戦略は、テーブルとクエリに依存します。
- 1. Oracleビューの列の順序は無視されます
- 2. SVN無視無視されます
- 3. MySqlユーザー変数が無視される
- 4. MySQL無視される場所
- 5. Gitフォルダ内のアップデートを無視する
- 6. ∩(∩)のフォントウェイトは無視されます
- 7. JAXB:bindings.xmlのglobalBindingsは無視されます
- 8. Divの幅は無視されます
- 9. nginx.confのlog_formatは無視されます
- 10. JavaScriptのwindow.scrollToは無視されます
- 11. .java.policyのエントリは無視されます
- 12. Vimのerrorformatは無視されます
- 13. diff中に行内のパターンは無視されますが、行全体では無視されます
- 14. mysqlにデータを読み込むと、最初の行は無視されます
- 15. MYSQLクエリでAND句が無視されます
- 16. `spring.config.location`は無視されます
- 17. OrderByでエイリアスは無視されます
- 18. 関数ceil()は無視されます
- 19. IS NULLは無視されます
- 20. エスプレッソテストでpressBack()は無視されます
- 21. 警告:File.mkdir()は無視されます
- 22. EXTRA_VIDEO_QUALITYは無視されます
- 23. JPA/Glassfish:persistence.xmlは無視されますか?
- 24. Whileループは無視されます
- 25. gitサブディレクトリは無視されます
- 26. IIS7.5 web.configリダイレクトは無視されます
- 27. Rsync --chownflag =フラグは無視されます
- 28. Tensorflow 'trainable = False'は無視されます
- 29. NuGet Pack:デフォルトは無視されます。
- 30. マッピングでnot_analyzedは無視されます