Postgresql 支持 SERIAL 数据类型。它在字段上自动创建一个序列和索引。例如,
CREATE TABLE person (
id SERIAL,
name TEXT
);
会自动转换为:
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
);
CREATE UNIQUE INDEX person_id_key ON person ( id );
参考 create_sequence 手册页获取关于序列的更多信息。你还可以用每行的 oid 字段作为一个唯一值。不过,如果你需要倾倒和重载数据库,你需要使用 pg_dump 的 -o 选项或者 COPY WITH OIDS 选项以保留 OID。
insert into person values(nextval('person_id_req'),'yourname');