2014-09-26 62 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