MySQL의 여러 열에 대한 고유 제약 조건을 어떻게 지정합니까?
테이블이 있습니다.
table votes (
id,
user,
email,
address,
primary key(id),
);
이제 사용자, 이메일, 주소 열을 (함께) 고유 하게 만들고 싶습니다 .
MySql에서 어떻게해야합니까?
- 물론 그 예는 단지 ... 예입니다. 따라서 의미론에 대해 걱정하지 마십시오.
ALTER TABLE `votes` ADD UNIQUE `unique_index`(`user`, `email`, `address`);
MySQL 테이블이 있습니다.
CREATE TABLE `content_html` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_box_elements` int(11) DEFAULT NULL,
`id_router` int(11) DEFAULT NULL,
`content` mediumtext COLLATE utf8_czech_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_box_elements` (`id_box_elements`,`id_router`)
);
UNIQUE KEY는 예상대로 작동하며 id_box_elements 및 id_router의 여러 NULL 행을 허용합니다.
MySQL 5.1.42를 실행 중이므로 위에서 설명한 문제에 대한 업데이트가있을 수 있습니다. 다행스럽게도 작동하고 바라건대 그대로 유지 될 것입니다.
MySQL이 NULL을 고유 값으로 취급하고 적어도 현재는 다중 열 인덱스에서이를 해결할 논리가 없기 때문에 행에 NULL 값이있는 경우 다중 열 고유 인덱스는 MySQL에서 작동하지 않습니다. 예, 동작은 미쳤습니다. 다중 열 인덱스의 합법적 인 많은 응용 프로그램을 제한하기 때문입니다. 그러나 그것이 무엇입니까 ... 아직은 MySQL에 "수정되지 않을 것"이라는 스탬프가 찍힌 버그입니다. 버그 추적 ...
이것을 시도해 보셨습니까?
UNIQUE KEY `thekey` (`user`,`email`,`address`)
이것은 mysql 버전 5.5.32에서 작동합니다.
ALTER TABLE `tablename` ADD UNIQUE (`column1` ,`column2`);
phpMyAdmin을 통해 여러 열의 고유 색인을 추가 할 수 있습니다 . (버전 4.0.4에서 테스트했습니다)
대상 테이블 의 구조 페이지로 이동 하십시오. 열 중 하나에 고유 인덱스를 추가하십시오. 방금 추가 한 고유 색인을 보려면 구조 페이지 하단의 색인 목록을 펼치십시오 . 편집 아이콘을 클릭하면 다음 대화 상자에서 해당 고유 색인에 추가 열을 추가 할 수 있습니다.
MySql 5 이상은 다음과 같이 작동합니다 (방금 테스트했습니다).
- nullable 열과 관련된 고유 제약 조건을 정의 할 수 있습니다. A는 Null을 허용하지 않지만 B는
- 이러한 제약 조건을 평가할 때 (A, null) 원하는만큼 여러 번 가질 수 있습니다 (동일한 A 값!)
- 하나의 (A, null B 아님) 쌍만 가질 수 있습니다.
예 : PRODUCT_NAME, PRODUCT_VERSION 'glass', null 'glass', null 'wine', 1
이제 ( 'wine'1)을 다시 삽입하려고하면 제약 조건 위반이보고됩니다.
나는 이것을 이렇게한다 :
CREATE UNIQUE INDEX index_name ON TableName (Column1, Column2, Column3);
고유에 대한 나의 규칙 index_name
은 TableName_Column1_Column2_Column3_uindex
.
나중에 중복을 피하려면. id2라는 다른 열을 만듭니다.
UPDATE tablename SET id2 = id;
이제 두 열에 고유 한 항목을 추가합니다.
alter table tablename add unique index(columnname, id2);
고유 색인을 추가하려면 다음이 필요합니다.
1) table_name
2) index_name
3) 인덱스를 추가하려는 열
ALTER TABLE `tablename`
ADD UNIQUE index-name
(`column1` ,`column2`,`column3`,...,`columnN`);
귀하의 경우 다음과 같이 고유 색인을 만들 수 있습니다.
ALTER TABLE `votes`ADD
UNIQUE <votesuniqueindex>;(`user` ,`email`,`address`);
mysql에서 테이블을 생성하는 경우 다음을 사용하십시오.
create table package_template_mapping (
mapping_id int(10) not null auto_increment ,
template_id int(10) NOT NULL ,
package_id int(10) NOT NULL ,
remark varchar(100),
primary key (mapping_id) ,
UNIQUE KEY template_fun_id (template_id , package_id)
);
'Development Tip' 카테고리의 다른 글
Chrome 개발자 도구에서 마우스 오버 상태를 참조하세요 (0) | 2020.09.28 |
---|---|
다른 브랜치에서 Git에 브랜치 만들기 (0) | 2020.09.28 |
EditText의 텍스트 끝에 커서를 놓습니다. (0) | 2020.09.28 |
MySQL 데이터베이스의 테이블 크기를 얻는 방법은 무엇입니까? (0) | 2020.09.28 |
Visual Studio 프로젝트 속성의 다양한 "빌드 작업"설정은 무엇이며 어떤 역할을합니까? (0) | 2020.09.28 |