MySQL은 프로그래밍 블록 (저장 프로 시저, 함수 및 트리거)에서 IF
문 만 지원합니다. 그러므로 당신은 당신이 원하는대로 할 수 없습니다.
대신, 당신은 단지 하나의 쿼리를 작성할 수 있습니다
INSERT INTO Products (product_id, name, category, manufacturer)
SELECT product_id, name, category, manufacturer
FROM (SELECT 10000 as product_id, 'IphoneZ' as name, null as category, 'appl' as manufacturer) t
WHERE NOT EXISTS (SELECT 1 FROM Products p WHERE p.name = t.name and p.manufacturer = t.manufacturer);
사실,하지만, 데이터베이스를 직접 고유성 이런 종류의 시행해야하는 것이 가장 좋습니다.
CREATE UNIQUE INDEX unq_product_manufacturer_name ON product(manufacturer, name);
가 그 다음을 수행하여 오류를 무시하는 쿼리를 작성할 수 있습니다 : 당신은 고유 제한 조건/인덱스 그렇게 할 수
INSERT INTO Products (product_id, name, category, manufacturer)
VALUES (10000, 'IphoneZ', null, 'appl')
ON DUPLICATE KEY UPDATE category = VALUES(category);
ON DUPLICATE KEY
을 아무것도하지 않습니다 - 단지에 제공 중복 값이 삽입되면 오류를 반환하지 마십시오.
단일 인용 부호 대신 이중 인용 부호가 사용됩니까? – jarlh
http://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html – 2oppin
제목 및 'mysql'검색하기 : http://stackoverflow.com/questions/5528854/usage-of-mysqls-if-exists가 있습니다. [ask]를 읽으십시오. – philipxy