2012-09-02 5 views
0

나는 데이터베이스 테이블과 같이 있습니다MySQL의 점검 제한 조건이

-- Table KNOWN_AS 
create table `known_as`(
id int not null auto_increment, 
person_id int not null, 
default_name boolean not null, 
first_name varchar(100) not null, 
middle_name_1 varchar(100), 
middle_name_2 varchar(100), 
middle_name_3 varchar(100), 
last_name varchar(100), 
primary key(id), 
foreign key(person_id) references `person`(id) 
) engine=innodb; 

값을 삽입, 나는 각각의 고유은 "person_id로"확인하고자하는 단 하나의 진실 "default_name"을 가지고있다.

내가 수행 한 모든 검색 방법은 값을 음수가 아닌 값으로 유지하는 방법 또는 값이 고유한지 확인하는 방법을 설명하는 페이지가되었습니다. 하나의 값을 확인하는 방법은 여러 항목간에 고유하지 않습니다 (단, not ALL).

도움/의견을 많이 보내 주시면 감사하겠습니다.

나는 각각의 고유은 "person_id로"확인하려는
+1

귀하의 질문에 의미 : 하나 개의 값을 확인하는 방법

  • 이 복합 (person_id, default_name) 통해 UNIQUE 인덱스를 정의 여러 항목 사이의 고유 (전부는 아니지만)입니다 완전히 다른 두 가지 : 1. 고유 한 "person_id"가 정확히 하나의 true "default_name"*과 2. * 하나의 값을 확인하는 방법을 확인하고 싶습니다. 여러 항목 중에서 고유 한 항목 (ALL이 아님) * 어느 것을 원하십니까? – eggyal

  • 답변

    1
    1. 왜하지 person 테이블에 NOT NULL 열로 default_name를 저장하는 단 하나의 진실 "default_name"

      이있다?

      ALTER TABLE known_as ADD UNIQUE INDEX (person_id, default_name); 
      
    +0

    고마워 - 나는 분명히 제약으로 잘못된 방향으로 가고 있었다 :) –