PGSQL 自增字段的初始值及更改


在实际开发中会有这样的需求,想要自己设置表中自增字段的初始值。

比如:有一个your_table表中有一个自增字段id,我们知道,插入数据后,默认是从1开始自增的。

但是假如现在有一个需求,是要求id从100开始插入,那么该怎么实现呢?其实就是一句sql命令的事儿:

select setval('your_table_id_seq', 100, false);

执行成功后,进行测试,插入一条数据后,会发现主键id的值会从100开始递增。

PostgreSQL 使用序列来标识字段的自增长,数据类型有 smallserial、serial 和 bigserial 。这些属性类似于 MySQL 数据库支持的 AUTO_INCREMENT 属性。

使用 MySQL 设置自动增长的语句如下:
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL 是用 AUTO_INCREMENT 这个属性来标识字段的自增。

PostgreSQL 使用序列来标识字段的自增长:

CREATE TABLE runoob
(
    id serial NOT NULL,
    alttext text,
    imgurl text
)
SMALLSERIAL、SERIAL 和 BIGSERIAL 范围:

伪类型    存储大小    范围
SMALLSERIAL    2字节    132,767
SERIAL    4字节    12,147,483,647