2011-05-06 4 views
0

내 데이터베이스에 존재하지 않는 데이터 만 입력하려면 INSERT IGNORE INTO를 사용하고 싶습니다. 이제 내 질문은 : 변수 "시간"이 allways 다른 경우 어떻게합니까? 그러나 나머지는 동일 할 것입니다. 예를 들어하나의 변수가 항상 다른 경우 IGNORE로 데이터를 삽입하는 방법은 무엇입니까?

:

"INSERT IGNORE INTO something (value1, value2, time) 
VALUES ('".$value1."', '".$value2."', '".NOW()."')" 

는 어떻게 INSERT 말할 수는 그가 시간 (NOW())에 allways 다른 경우에도 모든 데이터를 삽입해야한다고 무시?

도움 주셔서 감사합니다.

+1

기본 키를 정의 레코드의 중복을 피하기 위해 기본 키를 추가해야합니까? – gd1

답변

0

INSERT IGNORE는 고유 키가 위반 된 경우에만 삽입을 건너 뜁니다 (모든 열이 동일하지 않은 경우 제외). 모든 관련 열을 포함하고 시간 열을 포함하지 않는 고유 키를 정의하십시오.

예 : 당신은 이미 기록이있는 경우 :

1,2,12:00 

그리고 제 1 및 제 2 열을 포함 고유 키, 실행을

INSERT IGNORE INTO table VALUES(1,2,14:30) 

기록을 삽입하지 않음 반면,

INSERT IGNORE INTO table VALUES(1,3,14:30) 

새 레코드를 삽입합니다.

+0

하지만 50 개의 관련 열이있는 고유 키는 정의 할 수 없습니다! 이미 내부에 있지 않은 DB에만 데이터가 저장된다는 것을 어떻게 확인할 수 있습니까? – phpheini

+0

@phpheini 어떤 열이 고유해야하는지 (보통 50 개가 아닌)를 선택하거나 고유 한 체크섬 열을 만들 필요가 있습니까? – Galz

+0

고유 키를 설정하려고하면 오류 메시지가 나타납니다. # 1089 - 잘못된 하위 부분 키입니다. 사용 된 키 부분이 문자열이 아니거나 사용 된 길이가 키 부분보다 길거나 저장소 엔진이 고유 한 하위 키를 지원하지 않는 경우 – phpheini

0

당신은

alter table something add primary key (value1,value2,time); 
관련 문제