MySQL 테이블에서 고유 제한 조건 삭제


답변:


344

고유 제한 조건도 색인입니다.

먼저 SHOW INDEX FROM tbl_name색인 이름을 찾는 데 사용 하십시오. 인덱스 이름은 key_name해당 쿼리 결과에서 호출 된 열에 저장됩니다 .

그런 다음 DROP INDEX를 사용할 수 있습니다 .

DROP INDEX index_name ON tbl_name

또는 ALTER TABLE 구문 :

ALTER TABLE tbl_name DROP INDEX index_name

1
죄송하지만 선생님, 질문을 제기하기 전에 시도했지만 작동하지 않습니다
Ankur Mukherjee

@ Ankur Mukherjee : 언급을 잊어 버렸습니다 : tbl_name과 index_name을 각각 실제 테이블 이름과 실제 색인 이름으로 변경해야합니다. MySQL Query Browser에서 이름을 볼 수 있습니다. 당신은 또한 할 수 있습니다 SHOW CREATE TABLE tbl_name.
Mark Byers

오류 메시지 : "SQL 구문에 오류가 있습니다. 1 행의 '(player_id, year, tournament)'근처에서 사용할 올바른 구문은 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오.
Ankur Mukherjee

1
@ Ankur Mukherjee : 내가 제안한 방식은 내 의견으로는 그것을하는 가장 좋은 방법입니다.
Mark Byers

1
phpMyAdmin을 사용 하여 질문의 어딘가를 읽었습니다 ... @ systemovich가 제공 한 답변은 허용되는 것으로 표시해야합니다.
Pere

123

아래 표와 같이 요청 된 대로 phpMyAdmin을 사용하여DROP 테이블에서 고유 제한 조건을 지정할 수 있습니다 . Wingspan 필드에 고유 제한 조건이 설정되었습니다. 이 경우 제약 조건의 이름은 필드 이름과 동일합니다.

대체 텍스트


34
인덱스 섹션은 기본적으로 축소되어 있으며 섹션이 스크린 샷에있는 12px 글꼴의 작은 미묘한 링크로 확장되어 있습니다. 그러나 당신 덕분에 나는 그것을 발견했다. 당신의 얼굴을 축복하십시오. +1
Jack

11

테이블에 고유 키 제한 조건을 배치 할 수있는 인덱스는 PRIMARYUNIQUE인덱스입니다.

열에서 고유 키 제한 조건을 제거하고 색인을 유지하려면 유형으로 색인을 제거하고 다시 작성할 수 INDEX있습니다.

모든 테이블에 인덱스가 표시되어있는 것이 좋습니다 PRIMARY.


2
@thomasrutter가 고유 제약 조건을 제거하면 쿼리 성능에 악영향을 줄 수 있다는 사실을 다루었 기 때문에 상향 조정 되었으며, UNIQUE인덱스를 일반 으로 바꾸면이를 완화 할 수 있습니다 INDEX.
Alex

4

phpmyadmin을 사용하여 UNIQUE 제약 조건을 추가하려면 해당 테이블의 구조로 이동하여 아래를 찾아 클릭하십시오.

여기에 이미지 설명을 입력하십시오

동일한 방식으로 UNIQUE 제약 조건을 제거하려면 구조로 이동하여 인덱스 탭까지 아래로 스크롤하여 아래를 찾아 드롭을 클릭하십시오. 여기에 이미지 설명을 입력하십시오

이것이 효과가 있기를 바랍니다.

즐겨 ;)


이 솔루션은 내가 찾던 것입니다.
Aryeh Beitz

2

WAMP 3.0의 경우 : Add 1 Column 아래의 Structure를 클릭하면 '-Indexes'가 표시됩니다. -Index를 클릭하고 원하는 색인을 삭제하십시오.


2

mysql 데이터베이스 테이블에서 고유 제한 조건을 제거하려면 인덱스 삭제와 함께 alter table을 사용하십시오.

예:

테이블 unique_constraints (unid int, activity_name varchar (100), CONSTRAINT activty_uqniue UNIQUE (activity_name), 기본 키 (unid)) 생성;

alter table unique_constraints drop index activty_uqniue;

여기서 activty_uqniueactivity_name 열에 대한 UNIQUE 제약 조건입니다 .


0

고유 키를 삭제하면서 인덱스를 사용합니다.

ALTER TABLE tbl
DROP INDEX  unique_address;

0

제약 조건은 다음 구문으로 제거 할 수 있습니다.

테이블 변경

MySQL 8.0.19부터 ALTER TABLE은 제약 유형이 제약 이름에서 결정되는 모든 유형의 기존 제약 조건을 삭제하고 변경하기 위해보다 일반적인 (및 SQL 표준) 구문을 허용합니다. ALTER TABLE tbl_name DROP CONSTRAINT symbol;

예:

CREATE TABLE tab(id INT, CONSTRAINT unq_tab_id UNIQUE(id));

-- checking constraint name if autogenerated
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'tab';

-- dropping constraint
ALTER TABLE tab DROP CONSTRAINT unq_tab_id;

db <> 바이올린 데모


-3

내 테이블 이름은 고유 제약 조건 열 emp_id가있는 구매자입니다. 이제 emp_id를 삭제하려고합니다.

1 단계 : exec sp_helpindex 구매자, 이미지 파일 참조

2 단계 : 색인 주소 복사

여기에 이미지 설명을 입력하십시오

step3 : 테이블 구매자 변경 제한 변경 [UQ__buyers__1299A860D9793F2E] 테이블 구매자 변경 열 emp_id 변경

노트:

인용구

구매자 대신 테이블 이름으로 변경하십시오. :)

인용구

제약 조건이있는 모든 열 이름 emp_id가 삭제됩니다!


-5
  1. 첫 번째 삭제 테이블

  2. SQL로 이동

이 코드를 사용하십시오 :

CREATE  TABLE service( --tablename 
  `serviceid` int(11) NOT NULL,--columns
  `customerid` varchar(20) DEFAULT NULL,--columns
  `dos` varchar(30) NOT NULL,--columns
  `productname` varchar(150) NOT NULL,--columns
  `modelnumber` bigint(12) NOT NULL,--columns
  `serialnumber` bigint(20) NOT NULL,--columns
  `serviceby` varchar(20) DEFAULT NULL--columns
)
--INSERT VALUES
INSERT INTO `service` (`serviceid`, `customerid`, `dos`, `productname`, `modelnumber`, `serialnumber`, `serviceby`) VALUES
(1, '1', '12/10/2018', 'mouse', 1234555, 234234324, '9999'),
(2, '09', '12/10/2018', 'vhbgj', 79746385, 18923984, '9999'),
(3, '23', '12/10/2018', 'mouse', 123455534, 11111123, '9999'),
(4, '23', '12/10/2018', 'mouse', 12345, 84848, '9999'),
(5, '546456', '12/10/2018', 'ughg', 772882, 457283, '9999'),
(6, '23', '12/10/2018', 'keyboard', 7878787878, 22222, '1'),
(7, '23', '12/10/2018', 'java', 11, 98908, '9999'),
(8, '128', '12/10/2018', 'mouse', 9912280626, 111111, '9999'),
(9, '23', '15/10/2018', 'hg', 29829354, 4564564646, '9999'),
(10, '12', '15/10/2018', '2', 5256, 888888, '9999');
--before droping table
ALTER TABLE `service`
  ADD PRIMARY KEY (`serviceid`),
  ADD  unique`modelnumber` (`modelnumber`),
  ADD  unique`serialnumber` (`serialnumber`),
  ADD unique`modelnumber_2` (`modelnumber`);
--after droping table
ALTER TABLE `service`
  ADD PRIMARY KEY (`serviceid`),
  ADD  modelnumber` (`modelnumber`),
  ADD  serialnumber` (`serialnumber`),
  ADD modelnumber_2` (`modelnumber`);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.