2014-09-26 6 views
0

Я обычно использую этот код, чтобы создать новую таблицу из существующих таблиц:Создание Oracle SQL таблицы из другой таблицы и столбца идентификации

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

Как вставить столбец идентификаторов в TABLE_NEW. Итак, у меня будет 3 столбца в TABLE_NEW, ID, TEST_COLUMN и TABLE_ID?

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 –

+0

Спасибо, Питер. Проблема с вставкой в ​​том, что таблица довольно широкая - 122 столбца. Мне пришлось бы переписать много кода. Как временное исправление, я просто запускаю команду ALTER TABLE и использую там myseq.nextval. Это не хороший код, но он работает пока. –

+0

Отлично! Хороших выходных! –

Смежные вопросы