データベース

シーケンスな番号を持ったテーブルに重複の値を挿入する

MySQL の auto_increment や PostgreSql の serial を持ったカラムは、てっきり主キー(プライマリキー)じゃないとダメかと思っていたのですが、どうやらそうではありませんでした。(あれっ、常識?)

MySQL では INDEX を貼らないとダメですが、主キーなしでテーブルが作成できます。

例えばこんなの。

そして、同じ値でインサートが可能です。

PostgreSql の場合は primary key の指定なしでテーブル作成が可能で、同じ値のデータも投入できます。

テーブルの設計の段階やリストアなどの時には要注意です。

わざわざシーケンスな値を使うのに、主キーにしないのはどんな時に便利なんだろ・・・。