문제

테이블이 있습니다.

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`)
);

고유 한 키는 예상대로 작동하며 ID_BOX_ELEMENTS 및 ID_ROUTER의 여러 널 행을 허용합니다.

MySQL 5.1.42를 실행 중이므로 위에서 논의한 문제에 대한 업데이트가있을 것입니다. 다행스럽게도 그것은 효과가 있으며 희망적으로는 그런 식으로 머무를 것입니다.

MySQL이 NULL을 고유 한 값으로 취급하고 적어도 현재 멀티 컬럼 인덱스에서 작업 할 논리가 없기 때문에 MySQL에서 멀티 칼럼 고유 인덱스가 작동하지 않습니다. 예, 그 행동은 다중 열 인덱스의 합법적 인 적용을 제한하기 때문에 행동이 미쳤지 만, 그것이 바로 그 것입니다 ... 아직, 그것은 MySQL에서 "Will Fix"로 찍은 버그입니다. 버그 트랙 ...

이것을 시도해 보셨습니까?

UNIQUE KEY `thekey` (`user`,`email`,`address`)

이것은 MySQL 버전 5.5.32에서 작동합니다

ALTER TABLE  `tablename` ADD UNIQUE (`column1` ,`column2`);

다중 열 고유 인덱스를 통해 추가 할 수 있습니다 phpmyadmin. (버전 4.0.4로 테스트했습니다)

로 이동하십시오 구조 대상 테이블의 페이지. 열 중 하나에 고유 한 색인을 추가하십시오. 확장 인덱스 방금 추가 한 고유 인덱스를 보려면 구조 페이지 하단에 나열하십시오. 아이콘 편집을 클릭하면 다음 대화 상자에서 해당 고유 인덱스에 열을 추가 할 수 있습니다.

MySQL 5 이상이 다음과 같이 동작합니다 (방금 테스트했습니다) :

  • 귀중한 열과 관련된 고유 한 제약 조건을 정의 할 수 있습니다. A, B) A, B)가 A, B는 B입니다.
  • 그러한 제약을 평가할 때 원하는만큼 (a, null)를 가질 수 있습니다 (동일 가치!)
  • 당신은 하나만 가질 수 있습니다 (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)
);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top