2014-04-20 3 views
0

그래서 - 내 코드에 문제가 있습니다. 콘솔에서 직접 테스트하고 "구문 오류"가 표시됩니다.Mysql IF EXISTS THEN

SQL 구문에 오류가 있습니다. 올바른 구문은 근처에서 사용하는 는 MySQL 서버 버전에 해당하는 설명서를 확인 라인 1에서 'T

'(6 ' 및 UID ='1 IF가 존재 SELECT *를 user_inventory WHERE RESOURCE_ID = FROM ')'
IF EXISTS(SELECT * FROM user_inventory WHERE resource_id = '6' AND uid ='1') 
THEN UPDATE user_inventory SET resource_count = resource_count+1 WHERE resource_id = 6 AND uid = 1 
ELSE INSERT INTO user_inventory(uid, resource_id, resource_count) VALUES (1, 6, 1); 

나는 전에 IF EXISTS 절을 사용하지 않았습니다 ... 그래서 나는 무엇을 잘못했는지 확신하지 못합니다.

답변

4

SQL IF 문은 stored program 내에서만 사용할 수 있습니다. 시도한대로 일반 SQL 컨텍스트 내에서 사용할 수 없습니다.

그러나, 당신은 여기 IF를 사용할 필요가 없습니다 :

ALTER TABLE user_inventory ADD UNIQUE (uid, resource_id) 
  • 사용 INSERT ... ON DUPLICATE KEY UPDATE :

    INSERT INTO user_inventory 
        (uid, resource_id, resource_count) 
    VALUES 
        (1, 6, 1) 
    ON DUPLICATE KEY UPDATE 
        resource_count = resource_count + 1 
    
    1. user_inventory 테이블에 적절한 고유성 제약 조건을 정의

    +0

    좋습니다. 고맙습니다. 이것은 내가해야 할 일에 대해 실행 가능한 옵션이 아니기 때문에 다른 방법을 찾아야 할 것입니다. – user3277023

    +0

    @ user3277023 : "* 실행 가능한 옵션 *"이 아닌 이유를 설명 할 수 있다면 누군가 적절한 대안을 제안 할 수 있습니다. – eggyal