[sql] PostgreSQL 테이블이 이미 생성 된 후 UNIQUE 제약 조건을 추가 할 수 있습니까?

다음 테이블이 있습니다.

 tickername | tickerbbname  | tickertype
------------+---------------+------------
 USDZAR     | USDZAR Curncy | C
 EURCZK     | EURCZK Curncy | C
 EURPLN     | EURPLN Curncy | C
 USDBRL     | USDBRL Curncy | C
 USDTRY     | USDTRY Curncy | C
 EURHUF     | EURHUF Curncy | C
 USDRUB     | USDRUB Curncy | C

주어진 tickername/ tickerbbname쌍에 대해 둘 이상의 열이있는 것을 원하지 않습니다 . 이미 테이블을 만들고 테이블에 많은 데이터가 있습니다 (이미 고유 한 기준을 충족하도록 보장했습니다). 그러나 커질수록 오류가 발생할 여지가 있습니다.

UNIQUE이 시점에서 제약 조건 을 추가하는 방법 이 있습니까?



답변

psql인라인 도움말 :

\h ALTER TABLE

또한 postgres 문서 (훌륭한 자료 및 읽기 쉬운 문서)에 문서화되어 있습니다.

ALTER TABLE tablename ADD CONSTRAINT constraintname UNIQUE (columns);


답변

그래 넌 할수있어. 그러나 테이블에 고유하지 않은 항목이 있으면 실패합니다. 다음은 테이블에 고유 제한 조건을 추가하는 방법입니다. PostgreSQL 9.x를 사용하는 경우 아래 지침을 따르십시오.

CREATE UNIQUE INDEX constraint_name ON table_name (columns);


답변

이름과성에 따라 기존 제약 조건이 이미있는 테이블이 있고 고유 제약 조건을 하나 더 추가하려면 다음과 같이 전체 제약 조건을 삭제해야합니다.

ALTER TABLE your_table DROP CONSTRAINT constraint_name;

추가하려는 새 제약 조건이 해당 테이블의 모든 데이터에서 고유하거나 null이 아닌지 (Microsoft Sql의 경우 하나의 null 값만 포함 할 수 있음) 확인한 다음 다시 만들 수 있습니다.

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);


답변

예, 사실 뒤에 UNIQUE 제약 조건을 추가 할 수 있습니다. 그러나 테이블에 고유하지 않은 항목이 있으면 Postgres는 수정할 때까지 이에 대해 불평합니다.


답변