2012-03-19 3 views
0

에 대해 여러 개의 키를 확인하는 동안 다음과 같은 테이블이 :SQL 코드 INSERT에 대한 중복

내가 그 FIRST_NAME, LAST_NAME있는 유일한 제한이 테이블에 삽입 할 수 있도록하고 전화를 할 수 없습니다 원하는
CREATE TABLE IF NOT EXISTS `customer_list` (
    `id` INT AUTO_INCREMENT, 
    `first_name` char(4) NOT NULL, 
    `last_name` varchar(80) NOT NULL, 
    `phone` varchar(50) NOT NULL, 
    `province` varchar(50) NOT NULL, 
    `country` varchar(30) NOT NULL, 
    `start_date` TIMESTAMP NOT NULL, 
    `end_date` TIMESTAMP NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

똑같다. 그들은 동일한 경우 최종 사용자가 이미 레코드가 있음을 경고하기 위해 반환되는 오류 일종의 싶습니다 - 아니 삽입/업데이트/바꾸기 작업이 수행됩니다.

여기서 핵심은 INSERT 문이 어떻게 3 개의 필드가 중복되는지 확인해야한다는 것입니다. 모든 3 개의 필드가 중복되는 경우에만 오류가 반환되어야합니다. IE. 3 개 중 1 개 또는 2 개가 중복되어 여전히 입력 될 수 있습니다.

하나의 INSERT 문으로 가능합니까?

+0

[MySQL의 고유 제한 조건 (http://stackoverflow.com/questions/6679122/mysql-unique-constraint)의 중복 가능성 –

답변

1

시도 :

alter table customer_list add unique index(first_name, last_name, phone); 
+0

그게 완벽! 고맙습니다. 고유 한 색인 생성은 새로운 것이지만 완전히 이해합니다. INSERT에서 수행 할 검사가 없습니다. 이러한 열을 고유하게 만들면 일반 INSERT 문이 모든 작업을 수행하며 오류 만 잡습니다. – Vidarious