PostgreSQLで自動的に自動採番する
PostgreSQLでMySQLのAUTO_INCREMENTのように自動で採番したい場合はSERIAL型を指定する。
cookbook=# create table recipes ( cookbook(# id serial primary key, cookbook(# title varchar(255), cookbook(# description varchar(255), cookbook(# instructions text, cookbook(# date date); NOTICE: CREATE TABLE will create implicit sequence "recipes_id_seq" for "serial" column "recipes.id" CREATE TABLE cookbook(# \d List of relations Schema | Name | Type | Owner --------+-------------------+----------+------- public | recipes | table | cookbook public | recipes_id_seq | sequence | cookbook
この様にすることで、テーブル作成と同時にシーケンスが作成され、レコード挿入時にシーケンスから採番された値が自動的に設定されるようになる。
Serial型のからくりは、作成した表の定義を見てみるとわかるとおり、実際の型はinteger で default句を使用してシーケンスから値をとってくるようになっている。