2013-09-27 3 views
0

나는이 SQL 쿼리가 : 나는 phpMyAdmin을 가진 쿼리를 실행계수의 INSERT/DUPLICATE KEY UPDATE ON

INSERT INTO `Items` 
(`id`,`parent_id`,`name`) 
VALUES (123,321,null) 
ON DUPLICATE KEY UPDATE 
`id` = `id`, `parent_id` = VALUES(`parent_id`), `name` = VALUES(`name`); 

을, 그리고 나에게 바로 결과를 반환

0 - No update 
1 - Line inserted 
2 - Line updated 

하지만을 나는 쿼리를 실행할 때 java/jdbc를 통해 쿼리는 1-1-2 을 반환합니다. 즉, 삽입/업데이트가 전혀 없을 때 1이 반환됩니다. 아이디어가 있으십니까? 그것은 버그입니까, 아니면 그냥 놓친 것입니까?

UPDATE : 최신 커넥터/J - v5.1.26

UPDATE2 : Java 코드

int ans1 = 0; 
    int ans2 = 0; 
    try { 
     java.sql.Connection c = DbConnector.getConn(); 

     Statement s = c.createStatement(); 
     ans1 = DbConnector.execute("INSERT INTO `Items` (`id`,`parent_id`,`name`) VALUES (123,9990635,null) ON DUPLICATE KEY UPDATE `id` = `id`, `parent_id` = VALUES(`parent_id`), `name` = VALUES(`name`);"); 
     ans2 = DbConnector.execute("INSERT INTO `Items` (`id`,`parent_id`,`name`) VALUES (123,9990635,null) ON DUPLICATE KEY UPDATE `id` = `id`, `parent_id` = VALUES(`parent_id`), `name` = VALUES(`name`);"); 
     s.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    System.out.println(ans1); 
    System.out.println(ans2); 
+0

@AndeyP는 jdbc 코드를 표시합니다. – SpringLearner

+0

@AndreyP "나에게 반품하는 것"은 무엇을 의미합니까? Java 코드에서 사용했던'stmt.execute ...()'메소드의 반환 값을 의미합니까? –

+0

예, ans1 = 1, ans2 = 1 첫 번째 것은 괜찮습니다. 삽입해야합니다. 두 번째가 잘못되었습니다. 첫 번째 삽입 된 행을 삽입/업데이트하지 않습니다. – AndreyP

답변