sách gpt4 ăn đã đi

Postgresql 序列

In lại Tác giả: Walker 123 更新时间:2023-11-29 11:23:32 34 4
mua khóa gpt4 giày nike

当我从 Postgresql 表中删除所有记录,然后尝试重置序列以在插入时开始一个编号为 1 的新记录时,我得到不同的结果:

SELECT setval('tblname_id_seq', (SELECT COALESCE(MAX(id),1) FROM tblname));

这会将序列的当前值设置为 1,但下一条记录(实际上是第一条,因为还没有记录)的编号为 2!

而且我不能将它设置为0,因为序列中的最小值是1!

当我使用时:

ALTER SEQUENCE tblname_id_seq RESTART WITH 1;

插入的第一条记录实际上得到编号 1 !但是上面的代码不接受 SELECT 作为值而不是 1。

我想在没有记录的时候重新设置序号为1,那么第一条记录应该从1开始。但是当表中已经有记录时,我想重新设置顺序,以便下一条记录被插入将获得{highest}+1

有人对此有明确的解决方案吗?

câu trả lời hay nhất

sử dụngsetval 的三参数形式将is_called 标志设置为false,以便它为下一个nextval 返回序列的当前值 调用而不是立即生成一个新的。

http://www.postgresql.org/docs/current/interactive/functions-sequence.html

另请注意,您需要使用 COALESCE(MAX(id),0)+1,否则序列中的第一个值将是 MAX(id),这你知道已经存在。 (感谢斯蒂芬·丹恩)

关于Postgresql 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664912/

34 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress