栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

POSTGRES-使用ON CONFLICT防止序列递增不要这样做

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

POSTGRES-使用ON CONFLICT防止序列递增不要这样做

使用

insert ... onconflict
,您不能阻止
serial
冲突自动增加。Postgres(就像其他数据库一样)不保证序列是连续的,如文档中所述:

因为

smallserial
serial
并且
bigserial
使用序列实现时,可能有值的,其出现在列,即使没有行被彻底删除序列中的“洞”或间隙。即使从未成功将包含该值的行插入表列,也仍会“用完”从序列中分配的值。例如,如果插入事务回滚,则可能会发生这种情况。

如果您正在运行大量

insert
最终导致冲突的方法,则可以限制语法要求的一种方法是将语法更改为
not exists

insert into things (name)select namefrom (values ('desk')) v(name)where not exists (select 1 from things t1 where t1.name = v.name)

请注意,这仍然不能保证序列将是连续的(请参考文档中的以上引用)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430182.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号