이미 데이터가 저장된 테이블에 Primary Key나 Unique 인덱스를 만들고 싶지만 중복된 로우가 있으면
에러가 발생한다. 이럴경우 중복된 Row를 제거하여 보자.
-- 테스트를 위해 테이블을 생성 CREATE TABLE dbo.TEST_TBL ( NUM INT NOT NULL , ID VARCHAR(32) NOT NULL ) GO
-- 중복된 데이터를 삽입 INSERT INTO dbo.TEST_TBL (NUM, ID) VALUES (1, 'APPLE'), (2, 'BANANA'), (2, 'GRAPE') GO
/* Primary Key 제약조건추가 NUM 컬럼은 중복된 값을 가지고 있으므로 오류가 발생*/ ALTER TABLE dbo.TEST_TBL ADD CONSTRAINT PK_TEST_TBL PRIMARY KEY (NUM) GO
-- 중복된 값 찾기 SELECT NUM FROM dbo.TEST_TBL GROUP BY NUM HAVING COUNT(*) > 1 GO
-- 중복 된 값 확인 SELECT * FROM dbo.TEST_TBL WHERE NUM = 2 GO
-- 중복된 값을 다른 값으로 변경 UPDATE dbo.TEST_TBL SET NUM = 3 WHERE ID = 'GRAPE' GO
-- Primary Key 제약조건 다시 추가 ALTER TABLE dbo.TEST_TBL ADD CONSTRAINT PK_TEST_TBL PRIMARY KEY (NUM) GO |
'DBMS > SQL Server' 카테고리의 다른 글
[SQL Server] 데이터 저장과 관련한 세 가지 프로세스 (0) | 2013.01.22 |
---|---|
[SQL Server] 여러 개의 스크립트 한 번에 생성하기 (0) | 2013.01.22 |
[SQL Server] SQL 인젝션과 예방 (0) | 2013.01.21 |
[SQL Server] SQL Server Management Studio 단축키 (0) | 2013.01.21 |
[SQL Server] 집계 함수와 NULL 값 (0) | 2012.12.27 |