2016-07-31 69 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必须如果历史表是一样的源表和被以某种方式