2014-09-26 63 views
0

我通常使用这个代码从现有表创建一个新表创建Oracle SQL表:从另一个表和标识列

CREATE TABLE TABLE_NEW 
AS 
SELECT 'TEST' AS TEST_COLUMN, 
     PRS_ID AS TABLE_ID 
FROM TABLE_OLD 

如何插入标识列到TABLE_NEW。所以我将在TABLE_NEW,ID,TEST_COLUMN和TABLE_ID中有3列?

ID可以被定义为

[ID] [int] IDENTITY(1,1) NOT NULL, 

谢谢!

回答

1

先创建表格。

使用顺序,您可以创建一个这样的:

CREATE SEQUENCE myseq 
START WITH  1 
INCREMENT BY 1 
NOCACHE 
NOCYCLE; 

然后使用:

INSERT INTO table2 (col1, col2, col3) 
SELECT myseq.nextval, foo1, foo2 
FROM table1 
+0

我得到这个错误: “ORA-02287:此处不允许序列号”。错误是在myseq.nextval行 – 2014-09-26 21:01:03

+0

谢谢彼得。插入的问题是表格非常宽 - 122列。我将不得不重写很多代码。 作为一个临时修复,我只是运行一个ALTER TABLE命令并在那里使用myseq.nextval。它不是很好的代码,但它现在起作用。 – 2014-09-26 21:23:04

+0

太棒了!周末愉快! – 2014-09-26 21:24:28