2016-07-31 5 views
0

У меня есть исходная таблица и таблица истории. Они идентичны, за исключением того, что таблица истории содержит столбец notes в качестве последнего столбца.Вставка типа записи

Стол большой, 55 столбцов, который я не хочу перечислять все столбцы. Мы не хотим использовать триггер, но просто создаем запись истории в самом коде.

Если я просто сделаю INSERT INTO <history> SELECT * FROM <source> WHERE......, я получу «Недостаточно значений».

Я надеюсь сделать что-то такого рода: (Обратите внимание, что это только анонимный блок)

DECLARE 
v_old_rec  company_table%ROWTYPE; 

BEGIN 
    SELECT * INTO v_old_rec 
    FROM company_table 
    WHERE company_id = 32789; 

    INSERT INTO company_table_hist 
    VALUES v_old_rec || ',MONTHLY UPDATE'; 
END; 

Что-нибудь, как это возможно, так что я не должен перечислить 55 столбцов?

спасибо.

+2

Если история таблица такой же, как исходная таблица, а 'notes' столбца наконец, вы можете использовать' вставить в историю как выберите источник. *, null из источника' –

+1

@ Николас Краснов - так просто, что вы дали полный и правильный ответ. Скопируйте его в ответ, чтобы OP мог отметить его как правильный ответ, и мы все можем двигаться дальше. Благодаря! – mathguy

ответ

0

Это довольно просто на самом деле:

INSERT INTO company_table_hist 
    (SELECT t.*, MONTHLY_UPD 
    FROM company_table t 
    WHERE company_id = 32789); 

Конечно monthly_upd должен быть связан каким-то образом

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