gpt4 book ai didi

c# - PostgreSQL 是否根据使用显式 PK 声明插入的 UPDATE 记录推送自动增量 ID?

转载 作者:行者123 更新时间:2023-11-29 14:29:06 25 4
gpt4 key购买 nike

插入中的显式 PK 声明:我可以通过更新这些记录来推送自动增量值吗?

这个问题基本上说明了一切。我有明确声明了 ID (PK) 的种子数据,所以 Postgres 没有意识到我已经有,例如id 1 和 2。我可以更新那些改变的条目吗? name 属性使 Postgres 意识到 id 1 和 2 已经在表中并使其从 3 开始?如果不是,除了通过 .net 核心 C# 代码和代码优先迁移方法之外,还有什么其他好方法可以做到这一点?

更新
在尝试了一些事情之后,我决定放弃在 seed 中明确的 id 声明,毕竟改变它并以其他方式识别记录比通过 id 更容易,这使得 Postgres 立即可以正常工作。

最佳答案

虽然将值强制赋给使用序列自动生成的键是有效的,但这会产生比它解决的问题更多的问题。

方案一,让数据库告诉你它使用的id:
INSERT INTO Mytable(<place field list, excluding id>) VALUES (<place field values>) RETURNING id

这样,您就可以知道使用了什么 ID。

解决方案 2(更接近您想要的但我并不真正推荐),强制序列采用新值:
SELECT setval('<your sequence name>', 3, true);

关于c# - PostgreSQL 是否根据使用显式 PK 声明插入的 UPDATE 记录推送自动增量 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54366640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com