我有使用JPA和Postgresql的应用程序。我有现有的数据库,我需要在exsiting表中添加一个字段,该字段应该自动递增。我需要提供新记录的值将始终大于以前的记录。此外,我需要为存在的记录添加值...
我认为id字段将满足我的要求,但它没有......我有一个主键,它是由PostgreSQL中的序列生成的,但值并不总是更大。应用程序由许多并发客户端使用。
答案 0 :(得分:1)
以下SQL将创建一个序列,更改表并使用序列生成并设置新列中的默认值:
CREATE SEQUENCE myid_seq;
ALTER TABLE mytable ADD COLUMN myid bigint NOT NULL DEFAULT nextval('myid_seq');
因此,当插入新行时,数据库将设置该数字。 (如果你有很多并发插入,没问题)。
现有行将使用myid
的唯一值进行更新。
如果需要,可以添加unicity约束。