[SQL] MySQL의에서 기본 키를 제거
SQLMySQL의에서 기본 키를 제거
나는 라이브 MySQL 데이터베이스에 대한 사용 권한에 user_customers 매핑 다음과 같은 테이블 스키마를 가지고 :
mysql> describe user_customer_permission;
+------------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_customer_id | int(11) | NO | PRI | NULL | |
| permission_id | int(11) | NO | PRI | NULL | |
+------------------+---------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
나는 user_customer_id 및 permission_id에 대한 기본 키를 제거하고 ID에 대한 기본 키를 유지하고 싶습니다.
나는 명령을 실행하면 :
alter table user_customer_permission drop primary key;
나는 다음과 같은 오류가 발생합니다 :
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
어떻게 열 기본 키를 삭제할 수 있습니까?
해결법
-
==============================
1.인덱스이 제공되지 않을 경우 자동 증가 열을 유지하는 것은 MySQL이 인덱스의 왼쪽 부분으로서 자동 증가 컬럼을 필요로 그 이유는, 너무 비싸진다.
인덱스이 제공되지 않을 경우 자동 증가 열을 유지하는 것은 MySQL이 인덱스의 왼쪽 부분으로서 자동 증가 컬럼을 필요로 그 이유는, 너무 비싸진다.
당신은 키를 삭제하기 전에 자동 증가 속성을 제거해야합니다 :
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL; ALTER TABLE user_customer_permission DROP PRIMARY KEY;
모든 세 개의 열을 포함하고 ID가 고유 보장되지 않습니다 복합 기본 키가 있습니다.
이 고유하게 발생하는 경우, 당신은 다시 PRIMARY KEY와 AUTO_INCREMENT 할 수 있습니다 :
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
-
==============================
2.한 줄:
한 줄:
ALTER TABLE `user_customer_permission` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` )
당신은 또한 자동 증가를 잃고 할 필요가 없습니다 부작용을 미칠 수있는 그것을 다시 추가.
-
==============================
3.나는 Quassnoi이 직접 질문에 대답하고있다 생각합니다. 그냥 보조 노트 : 어쩌면이 당신의 부분에 좀 어색한 표현이지만, 당신은 세 가지 기본 키, 각 필드에 하나를 가지고 있다는 인상을 것 같다. 그렇지 않다. 정의함으로써, 당신은 하나의 기본 키를 가질 수 있습니다. 당신이 여기있는 세 가지 분야의 복합 인 기본 키입니다. 따라서, 당신은 "열에 기본 키를 삭제할 수 없습니다". 당신은 기본 키를 떨어 뜨리거나 기본 키를 삭제할 수 없습니다. 당신은 단지 하나 개의 컬럼을 포함하는 기본 키를 원하는 경우에, 당신은 3 열을 기존의 기본 키를 삭제하고 1 열에서 새로운 기본 키를 만들 수 있습니다.
나는 Quassnoi이 직접 질문에 대답하고있다 생각합니다. 그냥 보조 노트 : 어쩌면이 당신의 부분에 좀 어색한 표현이지만, 당신은 세 가지 기본 키, 각 필드에 하나를 가지고 있다는 인상을 것 같다. 그렇지 않다. 정의함으로써, 당신은 하나의 기본 키를 가질 수 있습니다. 당신이 여기있는 세 가지 분야의 복합 인 기본 키입니다. 따라서, 당신은 "열에 기본 키를 삭제할 수 없습니다". 당신은 기본 키를 떨어 뜨리거나 기본 키를 삭제할 수 없습니다. 당신은 단지 하나 개의 컬럼을 포함하는 기본 키를 원하는 경우에, 당신은 3 열을 기존의 기본 키를 삭제하고 1 열에서 새로운 기본 키를 만들 수 있습니다.
-
==============================
4.
ALTER TABLE `user_customer_permission` MODIFY `id` INT; ALTER TABLE `user_customer_permission` DROP PRIMARY KEY;
-
==============================
5.혹시 this- ALTER의 table_name 테이블 DROP PRIMARY KEY, PRIMARY KEY (col_name1, col_name2)를 추가 좋아해요, 복합 기본 키가;
혹시 this- ALTER의 table_name 테이블 DROP PRIMARY KEY, PRIMARY KEY (col_name1, col_name2)를 추가 좋아해요, 복합 기본 키가;
-
==============================
6."당신은 기본 키를 복원하는 경우, 당신은 반드시 다시 AUTO_INCREMENT로 다시 되돌아 갈 수 있습니다"
"당신은 기본 키를 복원하는 경우, 당신은 반드시 다시 AUTO_INCREMENT로 다시 되돌아 갈 수 있습니다"
"는 PK 속성을 복원"및 ID 열 "는 자동 증가 속성을 복원"하는 것이 바람직하다 여부에 의심이 없어야합니다.
이 테이블의 사전 정의의 자동 증가되었음을 감안할 때, 그것은 매우 가능성이 일부 프로그램이 존재한다는 것입니다 그 ID 값 (ID 열에이기 때문에 자동 증가 어쨌든)를 제공하지 않고이 테이블에 삽입합니다.
그러한 프로그램의 조작은 자동 증가 속성을 복원하지 않음으로써 중단됩니다.
-
==============================
7.먼저이 같은 AUTO_INCREMENT 필드를 제거하기 위해 열을 수정합니다 테이블 변경 user_customer_permission 수정 열 아이디 INT;
먼저이 같은 AUTO_INCREMENT 필드를 제거하기 위해 열을 수정합니다 테이블 변경 user_customer_permission 수정 열 아이디 INT;
다음으로, 기본 키를 놓습니다. 테이블 변경 user_customer_permission 기본 키를 삭제;
-
==============================
8.
ALTER TABLE `table_name` ADD PRIMARY KEY( `column_name`);
-
==============================
9.나는 같은 문제가 내 테이블 내 옆에 어떤 값을했다. 나는 내 기본 키를 변경하더라도
나는 같은 문제가 내 테이블 내 옆에 어떤 값을했다. 나는 내 기본 키를 변경하더라도
ALTER TABLEuser_customer_permissionDROP PRIMARY KEY, ADD PRIMARY KEY (ID)
문제는 내 서버에 계속했다. 나는 새로운 필드에 값을 전송하고 이전을 삭제 한 표 안에 새 필드를 생성, 문제가 해결!
-
==============================
10.열에 기본 키를 추가합니다.
열에 기본 키를 추가합니다.
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
테이블에서 기본 키를 제거하십시오.
ALTER TABLE table_name DROP PRIMARY KEY;
-
==============================
11.첫 번째 백업 데이터베이스. 그런 다음 테이블과 연관된 모든 외부 키를 놓습니다. 외래 키 table.Truncate에게 현재 테이블을 자릅니다. 필요한 기본 키를 제거합니다. 사용 SQLyog에 또는 작업대 또는 heidisql 또는 dbeaver 또는 phpMyAdmin을.
첫 번째 백업 데이터베이스. 그런 다음 테이블과 연관된 모든 외부 키를 놓습니다. 외래 키 table.Truncate에게 현재 테이블을 자릅니다. 필요한 기본 키를 제거합니다. 사용 SQLyog에 또는 작업대 또는 heidisql 또는 dbeaver 또는 phpMyAdmin을.
-
==============================
12.SQL 관리자에서 테이블을 찾아 바로 그때 오른쪽 작은 키 아이콘을 클릭하고 기본 키를 제거 선택을 클릭하고 디자인을 선택합니다.
SQL 관리자에서 테이블을 찾아 바로 그때 오른쪽 작은 키 아이콘을 클릭하고 기본 키를 제거 선택을 클릭하고 디자인을 선택합니다.
from https://stackoverflow.com/questions/2111291/remove-primary-key-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 먼저 특정 값으로 행을 반환합니까? (0) | 2020.04.13 |
---|---|
[SQL] MySQL을 같이 여러 값 (0) | 2020.04.13 |
[SQL] SQL 또는 TSQL 튜링 완료? (0) | 2020.04.13 |
[SQL] 테이블에 개최되는 잠금 확인하는 방법 (0) | 2020.04.13 |
[SQL] CTE, 하위 쿼리, 임시 테이블 또는 테이블 변수 사이의 성능 차이가 있나요? (0) | 2020.04.13 |