簡體   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