いろんなRDBMSで一意制約(ユニークキー)
ユニークキーってRDBMSによって挙動(というか仕様?)がちがうんです。
create table hoge(aaa int not null primary key, bbb int unique); -- (1) insert into hoge values(1, null); -- (2) insert into hoge values(2, null); -- (3)
これを各RDBMSで実行するとどうなるか?
SQL Server 2005
(3)でエラーになります。
(2)ですでにNULLが入っているから一意制約違反になっちゃうのです。
Oracle Databae 10.2、MySQL 5.0、PostgerSQL 8.2.4
テーブル作成と2件のINSERTに成功します。
SQL Server 2005はパラメータの設定で挙動を変更できたかも。うろ覚え。
いずれにしても、複数DB対応のアプリをつくるときとかは気をつけたいですね。