我经常需要在应用程序中克隆行,所以我会花很长的时间来完成它:
INSERT INTO mytable (a, b, c)
SELECT a,b,c FROM mytable WHERE id=12;
Run Code Online (Sandbox Code Playgroud)
(id 被声明为 a SERIAL PRIMARY KEY
, 12 是要克隆的行)。
问题是,当我添加新字段时,mytable
我必须记住更新克隆函数以也克隆这些新字段。
我想以更易于维护的方式克隆行。就像是 :
INSERT INTO mytable
SELECT *, id:DEFAULT FROM mytable WHERE id=12;
Run Code Online (Sandbox Code Playgroud)
在我编写本文时,我还认为克隆详细信息行会很好:如果我有一个使用引用完整性声明的详细信息/子表,如下所示:
CREATE TABLE mychild (
id serial PRIMARY KEY,
parentid int REFERENCES mytable(id),
a text
);
Run Code Online (Sandbox Code Playgroud)
我可以用一个命令克隆 mytable 和所有子表,而不是:
id
mychild
,设置parentid
为新的id
PostgreSQL(或扩展)中是否有任何内容可以帮助处理这些情况?