1 대 다 관계로 두 개의 테이블을 함께 연결하는 데 사용하는 테이블이 있습니다.두 개의 열에 대한 PSQL 고유 제약 조건
TableA
id
name
TableB
id
name
LinkTable
TableA_id
TableB_id
기본적으로 TableA 중 하나는 TableB를 많이 가질 수 있습니다. 아주 간단합니다. 나는 고유 한 값으로 함께 열을 결합 고유 제한 조건을 만들려면
LinkTable
TableA_id TableB_id
1 1
1 2
1 3
2 1
2 2
2 3
: 지금이 문제는 다음과 같은이 관계 배의 규칙을 따르는 제약 조건을 만드는 것입니다. 따라서 위의 링크 표에서이 새로운 제약 조건을 사용하면
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (1, 4);
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (1, 5);
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (2, 6);
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (3, 1);
With out any problems
And if I try to insert:
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (1, 1);
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (1, 3);
이미 1,1과 1,3이있는 행이 있으므로 제약 조건이 발생합니다. 어떻게 이렇게 postgres 제약 조건을 만들까요? 두 행에 고유 한 제약 조건을 설정하면 하나 이상의 TableA_id와 그 이상의 TableB_id를 동일하게 가질 수 없습니다.
해결책은 무엇입니까?
'제약이 불 것인가? –
@Ozzy - FYI, 이것은 PL/SQL이 아니라 SQL입니다. 모든 DDL lk create, alter etc ...은 SQL의 일부입니다. – Art
나는 그것을 깨달았지만 psql incase에는 고유 한 제약 조건을 작성하는 psql 고유의 방법이 지정되어 있습니다. 더 안전한 다음 죄송합니다 :) – Ozzy