2016-07-31 71 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

@NicholasKrasnov - 儘可能簡單,您給出了完整和正確的答案。請將其複製到答案中,以便OP可以將其標記爲正確答案,我們都可以繼續。謝謝! – mathguy

回答

0

這是很簡單的實際上是:

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

當然monthly_upd必須如果歷史表是一樣的源表和被以某種方式