PostgreSQL复制生成列的表行

  • 本文关键字:复制 PostgreSQL postgresql
  • 更新时间 :
  • 英文 :


假设我有一个生成列的表。

CREATE TABLE foo (x int, y int, z int GENERATED ALWAYS AS (x + y) STORED);
INSERT INTO foo (x, y) VALUES (1, 1);

是否有可能这样做,但以某种方式省略生成的列?

INSERT INTO foo SELECT * FROM foo;

我不想指定所有的列名,因为我希望即使新列添加到表中,插入操作也能正常工作。

我找不到任何聪明的解决办法。这个问题提供了一些思路,但我不知道它是否可以被改编。我能想到的唯一方法是在触发器之前设置z值,而不是使用生成的列。在这方面有什么建议吗?

我建议在几乎所有情况下都避免使用隐式列。在INSERT和SELECT中指定所需的列:

INSERT INTO foo (x, y) SELECT x, y FROM foo;

在编程中显式是一件好事。

在所有条件相同的情况下,最简单的解决方案往往是最好的解决方案。

最新更新