postgresql表自增主键
mysql的自增用AUTO_INCREMENT
标识。
但在postgresql中,是没有这个的。
pg提供了自增序列来支持这种自增:
- 创建表时控制
CREATE TABLE table_name
(
id serial NOT NULL,
name text
)
- 修改已有字段为自增
ALTER TABLE table_bane ALTER COLUMN id
ADD GENERATED BY DEFAULT AS IDENTITY
设置自增初始值
- 查询自增序列名
select pg_get_serial_sequence('表名', 'id');
- 设置起始位置为最大字段
select setval('第一步查出来的自增序列名', (select max(id) from 表名));
SMALLSERIAL、SERIAL 和 BIGSERIAL 范围:
SMALLSERIAL,2字节,1 到 32,767
SERIAL,4字节,1 到 2,147,483,647
BIGSERIAL,8字节,1 到 922,337,2036,854,775,807