ホーム › フォーラム › A5:SQL Mk-2掲示板 › 質問:Oracle結果セットの編集で全件変わった
-
投稿者投稿
-
SKゲスト
お世話になっております。
会社は転々としていますが、A5は10年以上愛用させていただいています。今回の症状について、
バグなのか仕様なのか、あるいは設定不足なのかご教示ください。今回、主キーのある品目マスタテーブルm_himmoku(475万件)から
SELECT * FROM m_himmoku WHERE himmoku_cd = ‘94053197-B0’
で検索した結果セットのうち1セルを手で直接編集+確定処理をさせると
3分ほどハングアップ後、ダイアログ”Update failed. 4324881 records.”の文字と共に
約430万件に対して1セル編集した内容と同じ更新がかかってしまいました。主キーのあるテーブルであれば
本来結果セットを直接編集しても該当レコードしか編集されない想定ですが
主キーあるのに、なぜほぼ全件動こうとしたのか、今後の予防のために何を見ればいいのかをお教え下さい。【環境】
DB:Oracle 19c
A5:Ver 2.17.4【その他切り分けた事】
・同じ操作を再実施・・症状再発
・同僚PCのVer 2.13.0で同じ操作・・発生せず
・同テーブルを別のWhere条件に変更・・症状再発
・同テーブルの別レコード、別カラムを変更・・症状再発
・別テーブルを同じ操作・・発生せず
・オートコミット、Transaction後の操作による違い・・いずれも症状再発。私の環境で、本テーブルへの同じ操作で発生率100%のまま置いています。
松原正和キーマスターSKさんこんにちは。
おそらく不具合と思うのですが、こちらで現象を再現できていないので確認させてください。
・接続はOCI経由 or 直接接続
・テーブルの主キーは単一カラム? 複数カラム?
・可能ならば主キーの構成(データ型)を教えてください。
・トリガーなどはないでしょうか?
・テーブルエディタでは発生するのでしょうか?
・テーブルエディタでは主キー項目の背景色はピンク色で表示されていますか?
以上よろしくお願いいたします。SKゲスト回答ありがとうございます。
以下、回答します。 追加の情報で少し長文になってます。すみません。・接続はOCI経由 or 直接接続
⇒OCI経由です。・テーブルの主キーは単一カラム? 複数カラム?
⇒単一カラムです。・可能ならば主キーの構成(データ型)を教えてください。
⇒NVARCHAR2(12)・トリガーなどはないでしょうか?
⇒ 同スキーマにてトリガーはありますが、本テーブルは関係ありません。・テーブルエディタでは発生するのでしょうか?
⇒試したところ、発生しませんでした。
([条件を指定して開く]にて同じ項目のみを表示させて同じ操作にて発生せず。
その後、Select文で同じWhere条件での結果セットでは再発を確認。)・テーブルエディタでは主キー項目の背景色はピンク色で表示されていますか?
⇒ピンク色で表示されています。
(結果セットでの表示は黄色です。
結果セットの場合は再現しない他のテーブルも黄色です。)■追加情報
PKの構成確認でいくつか気になる事があったので追加情報です。
本テーブルはCreateTable時にはPKを作っていなかったように見えます。
※本テーブル以外にも同じ法則のテーブルは複数ありましたが。。。【1】
[ソースをSQLで開く]から開いた画面にて、
—————————————————–
CREATE TABLE “XXXX”.”M_HIMMOKU”(
”HIMMOKU_CD” NVARCHAR2(12) COLLATE “USING_NLS_COMP” NOT NULL ENABLE,
中略1
CONSTRAINT “M_HIMMOKU_UK1” UNIQUE (“AAAAA”, “BBBBB”)
中略2
)
中略3
CREATE INDEX “XXXX”.”M_HIMMOKU_IDX1″ ON “K_ESPO”.”M_HIMMOKU” (“HIMMOKU_CD”, “CCCCC”)
中略4
ALTER TABLE “XXXX”.”M_HIMMOKU” ADD CONSTRAINT “M_HIMMOKU_PK” PRIMARY KEY (“HIMMOKU_CD”)
USING INDEX “XXXX”.”M_HIMMOKU_IDX1″ ENABLE
—————————————————–
だいたいのテーブルの場合はPKはCreate文の中に記載がありましたが本テーブルはalter tableで表示されていました。【2】
↓ テーブルエディタを開いた後の[インデックス]タブにて
——————————————-
No|インデックス名|カラムリスト|主キー|ユニーク
1|M_HIMMOKU_IDX1|HIMMOKU_CD,CCCCC|Yes|null
2|M_HIMMOKU_IDX2|略|null|null
3|M_HIMMOKU_IDX3|略|null|null
4|M_HIMMOKU_IDX4|略|null|null
5|M_HIMMOKU_PK|HIMMOKU_CD|null|Yes
6|M_HIMMOKU_UK1|AAAAA,BBBBB|null|制約
——————————————-
※nullは実際の表示は空欄でしたが、曖昧回避のためnullと表記。↓ テーブルエディタを開いた後の[制約]タブにて
——————————————-
No|制約名|種類|制約定義
1|M_HIMMOKU_PK|PRIMARY KEY|HIMMOKU_CD
2|M_HIMMOKU_UK1|UNIQUE|AAAAA,BBBBB
3|SYS_C0027808|CHECK|”HIMMOKU_CD” IS NOT NULL
4|SYS_C0027809|CHECK|”CCCCC” IS NOT NULL
——————————————-インデックスタブではM_HIMMOKU_IDX1がピンク背景
制約タブではM_HIMMOKU_PKがピンク背景後からAlter TableでPrimary Keyの記載のあるテーブルの場合はいずれも[インデックス]タブのPK表記がおかしかったです。
ただ、この法則時のテーブルをSelect文からの更新をかけた場合は再現はしませんでした。(PKが単一カラムなのは問題のテーブルだけで他は複数カラムという違いはありますが、、)テーブルによってPKがこうなっている状況について構築当時の情報はほとんどなく、現状のテーブル設計書は手元にあるものの当時のCreateTableの原文はわからないです。
ただ他に必要情報あれば現行情報はなるべく提供したい所存です。松原正和キーマスターSK さんこんにちは。
詳細な情報ありがとうございます。ただ、現状再現できていません。DB接続ライブラリのソースコードをみても、少なくともWHERE句なしのUPDATE文が生成されるようなことはなさそうです。 Version 2.18.0 beta 30で内部的な更新のSQLをログファイルに出せるようにしてみました。
A5M2.exe と同じフォルダに、A5M2.log というからファイルを作成すると、内部的なログファイルを出力するようになります。
お試しいただき、どのようなUPDATE文が生成されるか(意図されたSQLが生成されるか)確認できますでしょうか?SKゲスト回答ありがとうございます。
64bit版の2.18.0 beta30を使ってみました。
・そもそも症状が発生しませんでした。
・ちなみにA5M2.exeと同じ階層にA5M2.logを空フォルダで作成しましたが、特に何も書き込まれませんでした。(更新日時も変わらず)ログに関してオプション設定など何か必要でしょうか。
私の環境はWin10 21H2です。(自動でトランザクションを貼る設定以外は初期値です)切り分けで 2.17.2 と 2.18.0 beta1 で発生するか見てみますが日が空きますので
いったん上記にてご報告です。松原正和キーマスターSK さんこんにちは。
報告ありがとうございます。Version 2.17 系と 2.18 系では使っているDB接続ライブラリのバージョンは異なるのですが、関連しそうなコードの差異は自分の見た限りではなさそうに見えました。現状何が原因かは特定できていません。
A5M2.log はフォルダではなくファイル(空ファイル)なのですが、そこは大丈夫でしょうか? 関連するオプション設定等はありません。テキストファイル等で空ファイルを作成し、A5M2.log にリネームするなどで書き出されるようにならないでしょうか? -
投稿者投稿