【发布时间】:2021-10-08 09:33:30
【问题描述】:
我试图创建一个生成的列。它应该是某个函数的输出,其中参数作为其列之一,例如custom_function(column1)。 其中 custom_function 是 postgresql 的用户定义函数 column1 是表的任何列。 实际查询如下-
ALTER TABLE ttt.test
ADD COLUMN "checkDigit" char GENERATED ALWAYS AS (ttt.getfunction(actual_sn)) STORED;
但收到错误“错误:生成表达式不是不可变的”
【问题讨论】:
-
请edit您的问题并添加您尝试过的 SQL 语句以及您收到的完整和准确的错误消息。一切都像formatted text,no screen shots
-
错误信息很清楚:你的生成表达式(
ttt.getfunction(actual_sn))不是immutable。如果您的函数是不可变的,请将其标记为不可变。如果不是,您可能需要考虑其他解决方案。 -
@NickBarnes:感谢您的快速回复。它在使函数 IMMUTABLE 后起作用。
标签: postgresql generated-columns