PK(not Player Killer)
昼前、別の運送会社から、情報送信ができないと連絡あり。 エラーメッセージを見ると、うちのデータベースに書き込む際に主キー違反が発生している模様。 で、いろいろとデータを調べてみたのだが、なかなか原因がわからず大苦戦。 結局、以下のような原因だった。ある意味初歩な落とし穴だよなぁ。 ・データ構造 主キー 日付+取引先コード+出荷番号+色々+連番 データ 金額とかいろいろ ・処理 データを更新する際に、連番以外の主キーごとに金額合計データを生成する。 ・原因 データを生成する際に、送信元の出荷番号(文字列型)がvarcharで定義されたいたため、 空文字列とSpace(9)を区別して合計を計算してた。 書込み先データは、char not nullのため、勝手に後続スペースを補完。 結果、空文字列の合計行とSpace(9)な合計行がぶつかって、Rollback。 ・結論 文字列型を扱うときには、固定長と可変長に注意しましょう。 というか、いままでエラーが発生しなかったのが、奇跡だよなぁ。