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

时间:2015-02-18 12:52:58

标签: sql oracle sql-insert

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

简单的解决方案将是:

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

由于我的表有很多列,所以有一种方法可以说"我给你主键,所有其他列都是相同的"没有解释他们?

像:

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

1 个答案:

答案 0 :(得分:2)

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

实际上,您可以执行一个子查询,从表信息中选择列然后查询该子查询,但这对我来说没有意义。

如果你的表包含这么多列,那么将它们全部写下来很麻烦,那么你可能想重新设计数据库并将表拆分成多个表。