下面的生成子句在psql中编译失败,w/ERROR 42601
正确的语法是什么?(或者不支持生成的NUMRANGEs ?)
CREATE TABLE lh (
l NUMERIC,
h NUMERIC,
--lhr NUMRANGE GENERATED ALWAYS AS numrange(l,h) STORED
--lhr NUMRANGE GENERATED ALWAYS AS (l,h)::NUMRANGE STORED
--lhr NUMRANGE GENERATED ALWAYS AS '(l,h)'::NUMRANGE STORED
--lhr NUMRANGE GENERATED ALWAYS AS (l::NUMERIC,h:NUMERIC) STORED
lhr NUMRANGE GENERATED ALWAYS AS (l::NUMERIC,h:NUMERIC)::NUMRANGE STORED
);
您可以:
CREATE TABLE lh (
l NUMERIC,
h NUMERIC,
lhr NUMRANGE GENERATED ALWAYS AS (numrange(l,h)) STORED
);
您需要在()
中包含表达式。
不知道为什么你会这样做,因为它只是复制了现有的数据,可以像numrange(l,h) AS lhr
一样轻松地包含在查询中。
如果您只是使用SELECT
方便的范围,则使用作为VIEW
:
CREATE VIEW lh_range AS
SELECT l, h, numrange(l, h) AS lhr
FROM lh
查看现场演示