PK(not Player Killer)

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