Oracle - 带有生成的主键的 INSERT 语句

Oracle - INSERT statement with generated primary key

我有一个包含许多列(20 或 25)的 table,我想在其上构建一个插入语句,使用 select 并生成另一个主键

简单的解决方案是:

INSERT INTO myTable
SELECT mySeq.nextVal PRIMARY_KEY, COLUMN2, COLUMN3, COLUMN4...
  FROM myTable 
 WHERE PRIMARY_KEY = 1

因为我的table有很多列,有没有办法不用解释就说"i give you primary key, and ALL the other columns are the same"?

喜欢:

INSERT INTO myTable
SELECT mySeq.nextVal m.* /* Sure this not work because i get again PRIMARY_KEY column*/
  FROM myTable m
 WHERE PRIMARY_KEY = 1

无法指定 SELECT * EXCEPT aColumn 之类的内容,您必须像之前那样手动编写它们,抱歉。

实际上,您可以对 table 信息中的 select 列执行子查询,然后查询该子查询,但这对我来说毫无意义。

如果您的 table 包含太多列,以至于很难将它们全部写入,那么您可能需要重新设计数据库并将 table 拆分为多个 tables.