기존 테이블에 고유 키를 추가하는 방법 (비 고유 행 포함)
기존 테이블에 복잡한 고유 키를 추가하고 싶습니다. 키는 4 개 필드에서 포함 ( user_id
, game_id
, date
, time
). 그러나 테이블에는 고유하지 않은 행이 있습니다. 모든 중복 날짜를 제거하고 그 후에 복잡한 키를 추가 할 수 있음을 이해합니다.
중복 데이터를 모두 검색하지 않고 다른 솔루션이 존재할 수 있습니다. (예 : 고유 무시 등 추가).
UPD 검색, 중복 mysql 행을 제거하는 방법-좋은 해결책이라고 생각합니다. MySQL 쿼리 만 사용하여 중복을 제거 하시겠습니까?
yAnTar의 조언대로 할 수 있습니다.
ALTER TABLE TABLE_NAME ADD Id INT AUTO_INCREMENT PRIMARY KEY
또는
제약 조건을 추가 할 수 있습니다.
ALTER TABLE TABLE_NAME ADD CONSTRAINT constr_ID UNIQUE (user_id, game_id, date, time)
하지만 기존 데이터를 잃지 않기 위해 indentity 열을 추가 한 다음 복합 키를 만들 수 있습니다.
적절한 구문은 다음과 같습니다. ALTER TABLE Table_Name ADD UNIQUE (column_name)
예
ALTER TABLE 0_value_addition_setup ADD UNIQUE (`value_code`)
비슷한 문제를 해결해야했습니다. 나는 MS Access로부터 15000 개에 가까운 레코드를 가진 큰 소스 테이블을 물려 받았는데, 이것은 기본 키가 없는데, 이것을 정규화하고 CakePHP와 호환되도록 만들어야했습니다. CakePHP의 한 가지 규칙은 모든 테이블에 기본 키가 있고 첫 번째 열이며 'id'라는 것입니다. 다음의 간단한 문장은 MySQL 5.5에서 나를 위해 트릭을했습니다.
ALTER TABLE `database_name`.`table_name`
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (`id`);
이것은 기존 데이터 ( "FIRST"키워드) 앞에 정수 유형의 새 열 'id'를 추가했습니다. AUTO_INCREMENT 키워드는 1로 시작하는 ID를 증가시킵니다. 이제 모든 데이터 세트에는 고유 한 숫자 ID가 있습니다. (AUTO_INCREMENT 문이 없으면 모든 행이 id = 0으로 채워집니다).
비즈니스 로직에 대한 가정으로 솔루션을 제공하고 있습니다. 기본적으로 내 디자인에서는 테이블에 사용자-게임 조합에 대해 하나의 레코드 만 저장할 수 있습니다. 따라서 테이블에 복합 키를 추가합니다.
PRIMARY KEY (`user_id`,`game_id`)
자동 증가 ID 또는 UNIQUE ID를 생성하고 4 개의 필드에서 말하는 자연 키에 추가합니다. 이것은 테이블의 모든 행을 고유하게 만듭니다 ...
다중 고유 키를 테이블에 설정
ALTER TABLE table_name
ADD CONSTRAINT UC_table_name UNIQUE (field1,field2);
MySQL의 경우 :
ALTER TABLE MyTable ADD MyId INT AUTO_INCREMENT PRIMARY KEY;
하나 이상의 NULL 값을 허용하므로 UNIQUE 키를 추가하는 것에주의하십시오.
'Program Tip' 카테고리의 다른 글
자바에서 배열과 3 점 (Varargs)의 차이점 (0) | 2020.12.14 |
---|---|
Hive 파티션을 업데이트 / 드롭하는 방법? (0) | 2020.12.14 |
Visual Studio의 빌드 후 이벤트 명령 줄에서 .bat 파일을 실행할 수 있습니까? (0) | 2020.12.14 |
내 배열 목록의 항목 수 계산 (0) | 2020.12.14 |
WPF의 dataGridCells에 패딩 설정 (0) | 2020.12.14 |