고유 한 제약으로 인해 테이블에 새 레코드를 삽입하지 못한 경우이 기사를 놓치지 마십시오. 이 문제를 해결하는 데 도움이 될 것입니다.
이 기사에서는 테이블의 고유 제약 조건을 위반하여 새 레코드를 삽입하지 못한 경우 문제를 해결하는 4 가지 방법을 소개합니다. SQL Server.
실제 사례 :
이제 실제 사례를 살펴 보겠습니다. "제품"이라는 데이터베이스가 있고 "제품"이라는 테이블이 있습니다.DataNumen제품”. 테이블에는 "ProductId"및 "ProductName"이라는 두 개의 필드가 있으며 데이터 유형은 각각 "int"및 "varchar"입니다. 그리고 "ProductId"는 고유 한 제약 조건이있는 기본 키입니다.
현재 테이블에는 아래와 같이 몇 가지 레코드가 있습니다.
그림 1 표“DataNumen생성물"
데이터베이스에 대해 두 명의 DBA, 즉 Jim과 Tom이 있다고 가정합니다. 어느 날 Jim은 아래와 같이 테이블에서 첫 번째 레코드를 삭제했습니다.
DELETE FROM DataNumenProduct WHERE ProductId=1;
두 번째 날 Tom은 아래와 같이 삭제 된 레코드와 동일한 기본 키가있는 새 레코드를 테이블에 삽입했습니다.
INSERT INTO DataNumenProduct VALUES(1,'DataNumen OutLook Repair');
따라서 테이블에는 다음과 같은 레코드가 있습니다.
그림 2 표“DataNumen제품"
이제 Jim이 삭제 된 레코드를 다시 테이블로 복원하려는 경우 기본 키 "ProductId"의 고유 제약 조건을 위반하게됩니다. 이 경우 아래 해결 방법 중 하나를 사용하여 문제를 해결할 수 있습니다.
해결 방법 1 : 충돌을 방지하기 위해 새 레코드의 기본 키 수정
삽입 할 레코드의 기본 키를 테이블에있는 모든 기존 레코드의 값과 다른 새 값으로 수정할 수 있습니다. 위의 경우를 예로 들어 삽입 할 레코드의 경우 기본 키 값을 1에서 5로 수정할 수 있습니다. 그런 다음 새로 생성 된 레코드를 아래와 같이 테이블로 복원 할 수 있습니다.
INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');
다음은 표의 최종 레코드입니다.
그림 3 표의 최종 기록“DataNumen 제품"
해결 방법 2 : 충돌을 방지하기 위해 기존 레코드의 기본 키 수정
- 먼저 충돌을 일으킬 수있는 기존 레코드의 기본 키 값을 아래와 같이 업데이트해야합니다.
UPDATE DataNumenProduct SET ProductId = 6 WHERE ProductId = 1;
다음은 테이블의 업데이트 된 레코드입니다.
그림 4 표“DataNumen 제품"
- 그런 다음 삭제 된 레코드를 아래와 같이 테이블로 복원 할 수 있습니다.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair ');
이제 아래와 같이 최종 버전을 보겠습니다.
그림 5 표의 최종 기록“DataNumen 제품"
해결 방법 3 : 고유 제한 템포 비활성화rarSQL을 통해
- 문제를 해결하기 위해 테이블 tempo에서 기본 키 제약 조건 "pk"를 삭제할 수 있습니다.rarily, 아래와 같이 :
ALTER TABLE DataNumenProduct DROP CONSTRAINT pk;
- 그런 다음 삭제 된 레코드를 아래와 같이 테이블에 다시 추가 할 수 있습니다.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
이제 테이블의 레코드를 보겠습니다.
그림 6 표“DataNumen 제품"
- 그런 다음 두 레코드가 동일한 기본 키 값을 가지므로 충돌을 방지하기 위해 다음과 같이 그중 하나를 수정해야합니다.
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- 마지막으로 아래와 같이 테이블에 기본 키 제약 조건 "pk"를 다시 추가합니다.
ALTER TABLE DataNumenProduct ADD CONSTRAINT pk PRIMARY KEY(ProductId);
이제 다음과 같이 테이블에 몇 가지 레코드가 있습니다.
그림 7 표“DataNumen 제품"
해결 방법 4 : 고유 제한 템포 비활성화rar일리 통해 SQL Server Management Studio :
- 먼저 아래와 같이 GUI를 통해 테이블에서 기본 키 제약 조건 "pk"를 삭제합니다.
그림 8 GUI를 통해 기본 키 제약 조건 "pk"삭제
- 그런 다음 삭제 된 레코드를 실제 테이블에 아래와 같이 삽입합니다.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
이제 다음과 같이 테이블에 몇 가지 레코드가 있습니다.
그림 9 표“DataNumen 제품"
- 그런 다음 테이블에있는 기존 레코드의 기본 키 값을 아래와 같이 수정합니다.
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- 마지막으로 아래와 같이 GUI를 통해 테이블에 기본 키 제약 조건 "pk"를 다시 추가합니다.
그림 8 GUI를 통해 기본 키 제약 조건 "pk"다시 추가
해결 SQL Server 데이터베이스 손상
Unique 제약 외에 SQL Server 부패 또한 DBA를 괴롭히는 매우 일반적인 문제입니다. 일반적으로 우리는 SQL Server 손상을 해결하기위한 내장 명령. 그러나 작동하지 않으면 타사에 의존 할 수 있습니다. SQL Server 데이터 복구 도구.
저자 소개 :
Jim Hu는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. 액세스 수리 dbf 수리 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM








