테이블 B에서 PK로 id를 사용하고 있습니다.
테이블 A에서는 배열 컬럼이 있는데, 이 배열의 원소를 B의 id로 FK 제약을 걸고 싶습니다.
예를 들어 B에 1, 2, 3 ... 10이 있으면,
A에 있는 배열컬럼은 [1, 2, 3]이 가능해야 하고 [11] 등은 불가능해야 한다는거죠.
또한 B의 1이 11로 바뀌는 경우 A에서 참조한 배열컬럼의 값들도 모두 1에서 11로 바뀌었으면 좋겠습니다.
그냥
CREATE TABLE "A"
(
"id" serial NOT NULL,
"b_pk" integer[] NOT NULL,
PRIMARY KEY ("id"),
FOREIGN KEY ("b_pk") REFERENCES "B" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
) WITH (OIDS=FALSE)
;
뭐 이런 식으로 하니까 b_pk의 타입(integer[])과 B의 id의 타입(integer)가 달라서 에러가 나더군요.
어떤 좋은 방법이 없을까요? |