2011-02-08 4 views
0

행이 MySQL 데이터베이스 테이블에 추가해야하지만 행이 아직 존재하지 않는 경우에만 추가하십시오. 데이터베이스 서버가 다운되어서 테스트 할 수 없지만 예상대로 작동합니까?추가하지 않으면 행이 있는지 확인하십시오 [MySQL]

INSERT INTO `blocks` (`block_file`,`settings_group`) 
VALUES ('announcements','announcement_settings') 
WHERE NOT EXISTS (SELECT `block_file`,`settings_group` 
        FROM `blocks` 
        WHERE `block_file`='announcements' AND `settings_group`='announcement_settings') 

사운드 로직처럼 보입니다. 이것은 유효한 쿼리입니까, 아니면 이것을 수행하는 더 좋은 방법입니까?

+0

SQL Server에서 이러한 유형의 접근 방식은 경쟁 조건을 제공합니다. 이것이 MySQL에서도 마찬가지인지는 확실하지 않습니다. 이 특정 쿼리입니까 아니면 항상이 두 열에 고유성을 적용하고 싶습니까? –

+1

mysql과 동일 - 선택할 때 테이블을 수정할 수 없습니다. –

답변

3

(block_file,settings_group) 열에 UNIQUE 인덱스를 만들면 MySQL에서이 값을 복제 할 수있는 행을 삽입 할 수 없습니다.

질문에 대답하십시오 : 아니오, 전혀 작동하지 않습니다.

+1

여러 레코드를 삽입해야하는 경우 IGNORE 키워드 만 사용하면 중복 행을 삽입하려고하면 오류가 경고로 처리됩니다. sintax를 확인하십시오. http://dev.mysql.com/doc/refman/5.0/es/insert.html – fiunchinho

+0

고마워요! 예상대로 작동하고 훨씬 깨끗합니다. – Steven

관련 문제