Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > INSERT ... SELECT


Автор: Song 25.8.2005, 11:48
Есть таблица:

ID,
PARAM_ID,
VALUE_ID,
OP_ID,
ED_ID,
VALUE,
VALUE2,
NORM_ID,
CHECK_STATE

на INSERT поставлен триггер для нахождения значения автоинкремента для колонки ID, поэтому её переносить не надо (значение вставится само).

Необходимо сделать копию рядов таблицы, у которых колонка CHECK_STATE = 1.

Делаю так:

Код
INSERT INTO Tbl n

(

n.PARAM_ID, n.VALUE_ID, n.OP_ID, n.ED_ID, 
n.VALUE, n.VALUE2, n.NORM_ID, n.CHECK_STATE 

) VALUES (

SELECT 

(

r.PARAM_ID, r.VALUE_ID, r.OP_ID, r.ED_ID, 
r.VALUE, r.VALUE2, r.NORM_ID, r.CHECK_STATE 


)  FROM Tbl r WHERE r.Check_State=1)


Получаю: "Missing left parenthesis". Даже не могу понять, что ошибка означает smile
Может в синтаксисе наврал ? Да вроде пробовал и так и сяк..

Автор: denislpopov 25.8.2005, 11:59
Код

INSERT INTO Tbl (PARAM_ID, VALUE_ID, OP_ID, ED_ID, VALUE, VALUE2, NORM_ID, CHECK_STATE)    
SELECT r.PARAM_ID, r.VALUE_ID, r.OP_ID, r.ED_ID, r.VALUE, r.VALUE2, r.NORM_ID, r.CHECK_STATE    
FROM Tbl r 
WHERE r.Check_State=1;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)