繁体   English   中英

Postgres - 带约束的数组日期列

[英]Postgres - array date column with constraint

我正在尝试创建一个表test_table ,该表的year列采用“年”数组,如下所示:

CREATE TABLE avg_yearly_currencies_used (
    id serial PRIMARY KEY,
    year date[],
    CONSTRAINT first_jan_check CHECK ( date_trunc('year', year) = year )
);

CONSTRAINT检查日期是否采用以下格式: 2010-01-012012-01-01

如果year列不是数组,则上述命令可以正常工作并创建表。 但是,通过将日期设为数组并使用CONSTRAINT ,我得到以下错误:

ERROR: function date_trunc(unknown, date[]) does not exist

如何将CONSTRAINT应用于数组列year

您可以使用以下方法

  1. 编写一个自定义的 function 来检查数组中的所有值是否都符合条件:
create function check_date (
    date_ date[]) returns boolean as 
    $$
    declare
    result boolean;
    begin
    select bool_and (date_trunc('year', n) = n) into result
    from unnest(date_) s(n);
    return result;
    end;
    $$ 
    language plpgsql immutable;
  1. 在检查约束中添加上面的 function
CREATE TABLE avg_yearly_currencies_used (
    id serial PRIMARY KEY,
    year date[],
    CONSTRAINT first_jan_check CHECK (check_date(year))
);

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM