如何在postgresql中设置与id不同的自动增量字段

时间:2019-01-24 09:59:20

标签: java postgresql auto-increment

我在postgresql表中有 id 列和 position 列。我想自动增加位置,因此我使用序列数据类型添加了位置ALTER TABLE tbl ADD COLUMN position serial;

id       name     position
-------  -------  -------
1        S4       4
2        S2       2
3        S3       3
4        S1       1

问题是,当我尝试创建新对象时,出现以下错误: org.postgresql.util.PSQLException: error: PSQLException: ERROR: null value in column "position" violates not-null

如何设置排名列自动递增?

我的普通对象:

public class Stg {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    private Long id;

    @NotNull
    @Size(max = 20)
    @Column(name = "name", length = 20, nullable = false)
    private String name;

    private Integer position;

1 个答案:

答案 0 :(得分:0)

1st,您需要创建序列:

CREATE SEQUENCE sys_sequence_name START -9223372036854775808 MINVALUE -9223372036854775808 MAXVALUE 9223372036854775807;

然后创建表,但在声明行参数后添加

CREATE TABLE table_name (

id          bigserial primary key,
var_with_seq    bigint not null default nextval('sys_sequence_name')

nextval('sys_sequence_name')-这将使用您创建的顺序。