ComputerVip

postgres数据库设置主键自增序列值

 

 

1.先创建自增的序列

    CREATE SEQUENCE personid_seq  
      INCREMENT 1  
      MINVALUE 1  
      MAXVALUE 9223372036854775807  
      START 1  
      CACHE 5; 

 

如果需要删除多余序列命令:删除序列命令,delete删除不起作用,要使用drop删除命令

DROP	SEQUENCE personid_seq;

 

2然后在创建表的时候,设置自增主键

nextval(\'personid_seq\'::regclass)

 


      选中ID这列,在默认的设置语句nextval(\'personid_seq\'::regclass)  ,这样插入数据的时候主键就会自动递增了

3.pgsql设置主键自增序列值--插入新数据主键报错

例如:

 首先执行以下插入数据的命令:

insert into pgsql_test (name) values (\'testtest\');

报错原因是自增主键的序列值与当前主键的字段值不匹配,我们现在需要设置当前最大主键值为序列值,执行下面的语句:

SELECT setval(\'pgsql_test_id_seq\', (SELECT MAX(id) FROM pgsql_users));

 
其中 pgsql_test_id_seq 为你的序列名称。

 

4.mybatis postgresql insert后返回自增id

在使用mybatis + postgresql,我们有时在插入数据时需要返回自增id的值,此时在插入时,可以按照以下例子来编写mapper文件

<insert id="insertUser">
    <selectKey resultType="int"  order="AFTER" keyProperty="pid" >
        SELECT currval(\'tbl_user_pid_seq\'::regclass) AS pid
    </selectKey>
    insert into tbl_user(name, age) values(#{name}, #{age})
</insert>

 

分类:

技术点:

相关文章: