postgresql为什么序列只增加一次,有两个“nextval”

yr9zkbsy  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(308)

我正在实现一个带有注解功能的板。
我创建了一个这样的表 nextval ```
create table tr_board
(
b_id varchar(20) not null default nextval('seq_board'),
title varchar(256),
content varchar(500),
user_id varchar(30),
update_date timestamp not null,
is_complete varchar(1) default 0,
is_private varchar(1) default 0
);

这是我的insert sql。
    insert into tr_board
        (
            b_id,
            title,
            content,
            user_id,
            is_private,
            update_date
        )
    values
        (
            #{id},
            #{title},
            #{content},
            #{user_id},
            #{is_private},
            current_timestamp at time zone 'utc'
        )
</insert>
我曾经 `nextval` 在“create”和“insert”的“default”中。
所以我想序列会增加两倍。
但是为什么序列只增加了一次,即使总共存在两个nextval?
如果您能给我答复,我将不胜感激。
xpszyzbs

xpszyzbs1#

这个 nextval() 在列上,只有在未提供值或显式要求使用默认值时,才会调用default。您将获得一个序列值,然后将该值作为值传递给b\u id列,因此它不会尝试获取序列中的下一个值,因为不需要默认值。如果您得到值,它只会调用它两次,然后对它不做任何操作,需要使用默认值。

相关问题