如何指定一个生成的NUMRANGE?



下面的生成子句在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

查看现场演示