【发布时间】:2011-02-15 04:14:39
【问题描述】:
我需要在 Oracle 中将一些数据从一个表复制到另一个表,同时为新表中的数字列生成增量值。这是一个只有少量行数(100)的练习。
我对这个问题有足够的解决方案,但我很想知道是否有更优雅的方法。
我正在使用临时序列,如下所示:
CREATE SEQUENCE temp_seq
START WITH 1;
INSERT INTO new_table (new_col, copied_col1, copied_col2)
SELECT temp_seq.NEXTVAL, o.*
FROM (SELECT old_col1, old_col2
FROM old_table,
ORDER BY old_col1) o;
DROP SEQUENCE temp_seq;
有没有办法不创建序列或任何其他临时对象? 具体来说,这可以通过自包含的 INSERT SELECT 语句来完成吗?
请将触发器视为不可选项。
更多信息:我想控制插入新行的顺序,这与它们在旧表中创建的顺序不同(注意我添加了上面的 ORDER BY 子句)。但我仍然希望我的新顺序列从 1 开始。
有类似的问题,但我相信我的问题的细节是 SO 原创的。
【问题讨论】:
标签: sql oracle insert auto-increment