使用 select 和 autoincrement 插入 postgres 表

Posted

技术标签:

【中文标题】使用 select 和 autoincrement 插入 postgres 表【英文标题】:Insert into postgres table with select and autoincrement 【发布时间】:2018-04-28 16:24:21 【问题描述】:

我想将数据从表 T1 移动到另一个表 T2。 T1 有一个自动增量 id,这是 JPA 注释 @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) 与 Spring Data 实现的结果。

insert into T1(id, dataColumn)
(select NULL, dataToCopy
from T2)

这不起作用,因为它报告了违反 id 字段上的非空约束的错误。在这种情况下如何插入我的数据?

【问题讨论】:

描述“不起作用”。如果您需要适当的解决方案,请显示您收到的实际错误消息、您传递给 insert 的值等。 违反了ID字段的非空约束 【参考方案1】:

我不能以这种方式插入的原因是没有在 id 列上设置自动增量。没有自动增量的原因是为 id 设置生成器会导致需要进行额外的选择语句来从数据库序列中获取下一个值。

【讨论】:

以上是关于使用 select 和 autoincrement 插入 postgres 表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 仅从 SELECT 创建具有自动增量的临时表

AUTOINCREMENT 只允许在 INTEGER PRIMARY KEY 上使用 - android

AUTOINCREMENT 自动增量

[QT][SQL]sql学习记录5_sqlite Autoincrement(自动递增)

AUTOINCREMENT 不适用于 OleDbCommand

休眠:hbm2ddl.auto=update 和 autoincrement