假设我有一个生成列的表。
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;
在编程中显式是一件好事。
在所有条件相同的情况下,最简单的解决方案往往是最好的解决方案。