다음 형식의 데이터를 포함하는 HSTORE 필드에 검사 제약 조건을 만들고 싶습니다.
{
1 => 2020-03-01, 2 => 2020-03-07, etc, etc, etc,
}
여기서 키는 항상 양수이고 값은 날짜입니다.
여기에서 키를 추출하고 (by akeys
), 어떻게 든 가장 큰 키를 가져 와서 number_of_episodes
(양의 정수) 와 비교하고 싶습니다 . 하지만 검사 제약에서 배열을 사용할 수 없다고 말합니다.
질문은-어떻게 든 가장 큰 키를 HSTORE
정수로 추출하여 나중에 검사 제약 조건에서 사용할 수 있습니까?
감사합니다.
alter table archives_seasonmodel
add constraint test
check (max((unnest(akeys(episodes))) <= number_of_episodes ))
이것은 작동하지 않습니다.
이것은 PostgreSQL 10에서 저에게 효과적입니다.
# create table tvseries
(number_of_episodes int,
episodes hstore,
check (number_of_episodes >= all (akeys(episodes)::int[]))
);
CREATE TABLE
# insert into tvseries values (2, '1=>"a", 2=>"b"');
INSERT 0 1
# insert into tvseries values (1, '1=>"a", 2=>"b"');
ERROR: new row for relation "tvseries" violates check constraint "tvseries_check"
DETAIL: Failing row contains (1, "1"=>"a", "2"=>"b").
# insert into tvseries values (2, '1=>"a"');
INSERT 0 1
# select * from tvseries;
number_of_episodes | episodes
--------------------+--------------------
2 | "1"=>"a", "2"=>"b"
2 | "1"=>"a"
(2 rows)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다