データベースでプライマリーキーの無いテーブルで困ったこと

コンピュータ

プライマリーキーの無いテーブルで全く同じ内容のレコードが複数あり、1レコードを残して削除する方法を相談されたことがありました。
SQLで削除しようとすると該当レコードが全て消えてしまいます。相談者もそれで困っていたらしく、自分にもSQLでうまく解決する方法は思いつきませんでした。

重複部分のみ上手く削除することは諦めて、テーブルの中身を再作成することにします。
それだとSQLでも出来そうですが試行錯誤が面倒だったので、テーブルの内容をテキストファイルにエクスポートし適当なスクリプトで重複行を削除して、テーブルを空にして加工したテキストファイルをインポートしてあげました。

データベースのテーブル自体古くからシステムの移植だったので、それまでテキストファイルで保存していたデータをデータベースのテーブルに置き換えた為、そのようなことに成っていたようです。

問題が解消されて相談者には感謝されましたが、どうしてこのようなことが起きるのか腑に落ちない感じでした。
プライマリーキーの無いテーブルを作れるからと言って、それを使っても良いかというと別な問題だということを、相談者に説明してみましたが、上手く伝えることが出来ませんでした。
とりあえずテーブルには連番でものいいのでプライマリーキーとなる項目を用意するようにアドバイスしました。

コメント