ラブびあ

ビール。ときどきラブ

delete_flagに0/1

データベースでマスタを削除するとき、割り当て済みのプライマリキーを残すために削除フラグを立てて論理削除する設計があります。このときフラグだから0/1で、というシステムを山ほど見ましたが、100%暗黙の型変換なしの正しいSQLを書けているところはありませんでした。つまりdelete_flag=0とdelete_flag='0'は混在するのです。これはフラグという名前と0/1という値から、項目のデータ型を推測できないことが原因だと思うわけです。そこで、

delete_flagは文字列型で

値は文字列でfalse/trueとか、alive/deadとか、何ならO/Xとか、とにかく数字でなければ何でも良いです。これなら必ずdelete_flag='false'と記述されます。まぁ大文字小文字の間違いとか、頭文字だけにしたらどっちが有効だよ、とかいうのはありますが少なくとも暗黙の型変換が紛れ込む余地をなくせます。ぜひ誰かやってみてくださいw