ユーザーアカウントのテーブルのログインIDで
login_name VARCHAR(256) NOT NULL UNIQUE
なんて指定でユニークキーを貼ったのはいいが、Case SensitiveなID [1]になってしまい、気が付いたら大文字小文字を使い分けられてgdgdになる
# だけど「はてな」はMySQLじゃなかったの?って知らないけど
# どちらにせよはてながPostgreSQLだとは思ってません。もしかしてDBM?;)
解決策は関数インデックスを使って
CREATE UNIQUE INDEX indexname ON usertable (lower(login_name));
とすると、「Ryo」があるとき「ryo」はINSERTできなくなります。
けど、これじゃ「Ryo」がINSERTできちゃうんで、CHECK句を使って
login_name VARCHAR(256) NOT NULL UNIQUE CHECK (login_name = lower(login_name))
ってのもいいかも。
[1] https://subtech.g.hatena.ne.jp/miyagawa/20070401
投稿者: ほそいりょすけのほめぱげ 投稿日時: 2008年1月19日(土) 21:29- 参照(244)
- オリジナルを読む