2011-08-01 6 views
4

해당 도메인 이름으로 레코드가 존재하지 않으면 테이블에 레코드를 삽입하고 싶습니다. 다음 SQL은이를 수행해야하지만 오류가 발생합니다.삽입 - 어디 존재하지 않습니다

먼저 업데이트를 수행하려는 이유는 나중에 코드에서 여러 업데이트를 수행하고 모든 업데이트를 수행하기 전에 먼저 내 테이블에서 레코드가 필요하기 때문입니다.

왜이 mySQL 쿼리에 오류가 발생합니까?

insert into domain (name) 
values ('domain.com.au') 
WHERE NOT EXISTS 
(
    select name 
    from domain 
    where name = 'domain.com.au' 
); 

두 경우 모두 분할 작업이 좋지만 함께 작동하지 않을 경우 쿼리가 실행됩니다.

답변

6

데이터베이스에서 처리하도록하십시오. name에 고유 색인을 사용하면 복제본을 삽입하려고하면 INSERT가 실패합니다.

CREATE UNIQUE INDEX idx_name ON domain (name) 
+0

나중에 업데이트를 수행하면서 데이터베이스에 새 레코드를 추가하려고합니다. 업데이트를 수행하기 위해 데이터베이스에 레코드가 필요합니다. –

+0

질문에 자세히 설명해 주시겠습니까? 레코드가없고 UPDATE가있는 경우 INSERT를 수행하려면 INSERT ... ON DUPLICATE KEY UPDATE를 사용하십시오. – Jacob

+0

내 질문 업데이트 - 먼저 업데이트를하고 있습니다 - 업데이트가 도메인 이름을 찾지 못하면 삽입을 원합니다. 코드에서 더 내려간 다른 업데이트가 있기 전에이 작업이 필요합니다. –

0

WHEREINSERT 절을 결합 할 수 없습니다. 대신 REPLACE INTO을 사용하십시오.

0

어떤 오류가 발생하고 있습니까?

내 생각 엔 '존재하지 않는 곳'내부의 선택이 허용되지 않습니다.

관련 문제