将 %rowtype 数据插入另一个 table - plpgsql / Postgres

Insert %rowtype data into another table - plpgsql / Postgres

我有一个 table 称为 empl,还有另一个 table new_empl 具有与 empl 相同的列和定义。是否可以使用以下代码将 v_record 中的记录插入 new_empl 中?

DECLARE
   v_record empl%rowtype;
BEGIN 
   Insert into new_empl values v_record;
END;

empl table 中的列太多,我想避免列出它们。

上面的代码片段适用于 Oracle,但对于 Postgres/pgplsql,下面的代码片段非常有用:

DECLARE
   v_record empl%rowtype;
BEGIN 
   Insert into new_empl values (v_record.*);
END;

Is it possible to insert records from v_record in new_empl using the following code

Yes 这是可能的,但是您插入的方式不会插入任何内容,因为没有任何东西可以分配给变量 v_record 。相反,您可以执行以下操作:

DECLARE
   v_record empl%rowtype;
BEGIN 
   Insert into new_empl Select * from empl;
END;

但是为什么你想在 PLSQL 块中完成它,而你可以自己完成 SQL

   Insert into new_empl select * from empl;