我正在实现一个带有注解功能的板。
我创建了一个这样的表 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?
如果您能给我答复,我将不胜感激。
1条答案
按热度按时间xpszyzbs1#
这个
nextval()
在列上,只有在未提供值或显式要求使用默认值时,才会调用default。您将获得一个序列值,然后将该值作为值传递给b\u id列,因此它不会尝试获取序列中的下一个值,因为不需要默认值。如果您得到值,它只会调用它两次,然后对它不做任何操作,需要使用默认值。