matsuo’s blog

新米プログラマ?の備忘録

【Perl】キー重複について(1)

ファイルの内容をDBに更新する際は、
キー重複がないかどうかをチェックしなければならない。
忘れやすいけど重要。

[前提]
下記のようなテーブルが存在するとする。
キー項目は「名称」と「色」。

名称 | 色 | 値段 |
apple | red | 100 |
banana | yellow | 200 |
peach | pink | 300 |

下記のようなテキストファイルが存在するとする。
sample.txt
apple,red,150
banana,yellow,250
peach,pink,350

先ほどのテーブルに対して、ファイル内容で更新処理をすると、

名称 | 色 | 値段 |
apple | red | 150 |
banana | yellow | 250 |
peach | pink | 350 |

となる。

だけど、この時にキー重複の可能性を考えなくてはいけない。
先ほどの場合は、ファイル内容にキー重複がなかったので良かったが、
次のような場合だとおかしくなる。

sample.txt
apple,red,150
banana,yellow,250
apple,red,350

apple,redというキー項目が同一ファイル内で重複している。
値段を150か350かのどちらで更新すれば良いのかわからナス。

こういう時は「キー重複エラー」ということにしている。
「次のキー項目が同一ファイル内で重複しています: apple, red」
みたいなメッセージを出してあげる。

そうすることで謝った値でのDB更新を防げる。

忘れやすいので注意する。

次は、実際のキー重複チェックのコードを書いてみる。