PostgreSQL是否根据基于显式PK声明插入的UPDATE记录来推送自动增量ID?

时间:2019-01-25 13:50:23

标签: c# postgresql auto-increment

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

这个问题完全说明了一切。我有明确声明ID(PK)的种子数据,因此Postgres不会意识到我已经有例如ID 1和2。我可以更新这些条目吗? name属性,以使Postgres认识到ID 1和2已经在表中并使其从3开始?如果没有,还有什么其他好的方法,但是只能通过.net核心C#代码并采用代码优先方法进行迁移?

更新
经过尝试后,我决定退出种子中的显式id声明,毕竟更改ID并以其他方式标识记录比通过id标识要容易得多,这使得Postgres可以立即正常工作。

2 个答案:

答案 0 :(得分:1)

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

解决方案1,让数据库告诉您所使用的ID:
"16, 100, 16, 16"

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

解决方案2(与您想要的更接近,但是我不建议这样做),强制序列采用新值:
new Margin(16, 100, 16, 16)

答案 1 :(得分:1)

您的问题不是很清楚;我假设您要提高自动递增列的当前值,以避免与已经插入的值发生冲突。

为此,找出支持autoincrement列的顺序。 psql命令\d将很有帮助。

然后使用类似的方式使当前值前进

ALTER SEQUENCE seq_name RESTART 123456;