4 고유 제약 조건으로 인해 새 레코드를 삽입 할 수없는 경우의 해결 방법 SQL Server

지금 공유 :

고유 한 제약으로 인해 테이블에 새 레코드를 삽입하지 못한 경우이 기사를 놓치지 마십시오. 이 문제를 해결하는 데 도움이 될 것입니다.

이 기사에서는 테이블의 고유 제약 조건을 위반하여 새 레코드를 삽입하지 못한 경우 문제를 해결하는 4 가지 방법을 소개합니다. SQL Server.

실제 사례 :

이제 실제 사례를 살펴 보겠습니다. "제품"이라는 데이터베이스가 있고 "제품"이라는 테이블이 있습니다.DataNumen제품”. 테이블에는 "ProductId"및 "ProductName"이라는 두 개의 필드가 있으며 데이터 유형은 각각 "int"및 "varchar"입니다. 그리고 "ProductId"는 고유 한 제약 조건이있는 기본 키입니다.

현재 테이블에는 아래와 같이 몇 가지 레코드가 있습니다.표“DataNumen생성물"

그림 1 표“DataNumen생성물"

데이터베이스에 대해 두 명의 DBA, 즉 Jim과 Tom이 있다고 가정합니다. 어느 날 Jim은 아래와 같이 테이블에서 첫 번째 레코드를 삭제했습니다.

DELETE FROM DataNumenProduct
WHERE ProductId=1;

두 번째 날 Tom은 아래와 같이 삭제 된 레코드와 동일한 기본 키가있는 새 레코드를 테이블에 삽입했습니다.

INSERT INTO DataNumenProduct
VALUES(1,'DataNumen OutLook Repair');

따라서 테이블에는 다음과 같은 레코드가 있습니다.

표“DataNumen제품"

그림 2 표“DataNumen제품"

이제 Jim이 삭제 된 레코드를 다시 테이블로 복원하려는 경우 기본 키 "ProductId"의 고유 제약 조건을 위반하게됩니다. 이 경우 아래 해결 방법 중 하나를 사용하여 문제를 해결할 수 있습니다.

해결 방법 1 : 충돌을 방지하기 위해 새 레코드의 기본 키 수정

삽입 할 레코드의 기본 키를 테이블에있는 모든 기존 레코드의 값과 다른 새 값으로 수정할 수 있습니다. 위의 경우를 예로 들어 삽입 할 레코드의 경우 기본 키 값을 1에서 5로 수정할 수 있습니다. 그런 다음 새로 생성 된 레코드를 아래와 같이 테이블로 복원 할 수 있습니다.

INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');

다음은 표의 최종 레코드입니다.표의 최종 기록“DataNumen 제품"

그림 3 표의 최종 기록“DataNumen 제품"

해결 방법 2 : 충돌을 방지하기 위해 기존 레코드의 기본 키 수정

  1. 먼저 충돌을 일으킬 수있는 기존 레코드의 기본 키 값을 아래와 같이 업데이트해야합니다.
UPDATE DataNumenProduct
SET ProductId = 6
WHERE ProductId = 1;

다음은 테이블의 업데이트 된 레코드입니다.

표“DataNumen 제품"

그림 4 표“DataNumen 제품"

  1. 그런 다음 삭제 된 레코드를 아래와 같이 테이블로 복원 할 수 있습니다.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair ');

이제 아래와 같이 최종 버전을 보겠습니다.

표의 최종 기록“DataNumen 제품"

그림 5 표의 최종 기록“DataNumen 제품"

해결 방법 3 : 고유 제한 템포 비활성화rarSQL을 통해

  1. 문제를 해결하기 위해 테이블 ​​tempo에서 기본 키 제약 조건 "pk"를 삭제할 수 있습니다.rarily, 아래와 같이 :
ALTER TABLE DataNumenProduct
DROP CONSTRAINT pk;
  1. 그런 다음 삭제 된 레코드를 아래와 같이 테이블에 다시 추가 할 수 있습니다.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

이제 테이블의 레코드를 보겠습니다.

표“DataNumen 제품"

그림 6 표“DataNumen 제품"

  1. 그런 다음 두 레코드가 동일한 기본 키 값을 가지므로 충돌을 방지하기 위해 다음과 같이 그중 하나를 수정해야합니다.
UPDATE DataNumenProduct SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. 마지막으로 아래와 같이 테이블에 기본 키 제약 조건 "pk"를 다시 추가합니다.
ALTER TABLE DataNumenProduct
ADD CONSTRAINT pk PRIMARY KEY(ProductId);

이제 다음과 같이 테이블에 몇 가지 레코드가 있습니다.

표“DataNumen 제품"

그림 7 표“DataNumen 제품"

해결 방법 4 : 고유 제한 템포 비활성화rar일리 통해 SQL Server Management Studio :

  1. 먼저 아래와 같이 GUI를 통해 테이블에서 기본 키 제약 조건 "pk"를 삭제합니다.

GUI를 통해 기본 키 제약 조건 "pk"삭제

그림 8 GUI를 통해 기본 키 제약 조건 "pk"삭제

  1. 그런 다음 삭제 된 레코드를 실제 테이블에 아래와 같이 삽입합니다.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

이제 다음과 같이 테이블에 몇 가지 레코드가 있습니다.

표“DataNumen 제품"

그림 9 표“DataNumen 제품"

  1. 그런 다음 테이블에있는 기존 레코드의 기본 키 값을 아래와 같이 수정합니다.
UPDATE DataNumenProduct
SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. 마지막으로 아래와 같이 GUI를 통해 테이블에 기본 키 제약 조건 "pk"를 다시 추가합니다.GUI를 통해 기본 키 제약 조건 "pk"를 다시 추가합니다.

그림 8 GUI를 통해 기본 키 제약 조건 "pk"다시 추가

해결 SQL Server 데이터베이스 손상

Unique 제약 외에 SQL Server 부패 또한 DBA를 괴롭히는 매우 일반적인 문제입니다. 일반적으로 우리는 SQL Server 손상을 해결하기위한 내장 명령. 그러나 작동하지 않으면 타사에 의존 할 수 있습니다. SQL Server 데이터 복구 도구.

저자 소개 :

Jim Hu는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. 액세스 수리 dbf 수리 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM

지금 공유 :

댓글이 닫혀있다.