2016-07-31 34 views
0

Ich habe eine Quellentabelle und eine Verlaufstabelle. Sie sind identisch, außer dass die Protokolltabelle eine notes Spalte als letzte Spalte enthält.Datensatztyp einfügen

Die Tabelle ist groß, 55 Spalten, die ich nicht alle Spalten auflisten möchte. Wir möchten hier keinen Trigger verwenden, sondern nur den Verlaufseintrag im Code selbst erstellen.

Wenn ich einfach eine INSERT INTO <history> SELECT * FROM <source> WHERE...... mache, bekomme ich "nicht genug Werte".

Ich bin der Hoffnung, etwas dieser Art zu tun: (Hinweis: Dies ist nur ein anonymer Block ist)

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; 

etwas Derartiges möglich, so habe ich nicht 55 Spalten Liste?

Vielen Dank.

+2

gebunden, wenn Verlaufstabelle die gleiche wie Quelltabelle und die 'notes' Spalte letzten Sie verwenden können,' einfügen in die Geschichte als Quelle auswählen. *, null aus Quelle " –

+1

@NicholasKrasnov - so einfach wie es ist, gab man eine vollständige und korrekte Antwort. Bitte kopieren Sie es in eine Antwort, damit das OP es als richtige Antwort markieren kann und wir alle weitermachen können. Vielen Dank! – mathguy

Antwort

0

Es ist eigentlich ganz einfach:

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

Natürlich monthly_upd muss irgendwie