2017-10-08 21 views
-1

J'essaie d'exécuter une instruction INSERT ... ON DUPLICATE KEY avec jdbc et elle échoue juste sans message d'erreur indiquant pourquoi. Même lorsque je lance l'instruction individuellement dans Script.sql, cela ne fonctionne pas. Voici la déclaration que je suis en train de courir:MySQL: Échec de l'instruction DUPLICATE KEY dans JDBC

INSERT INTO ptable(username, p, roll, joined) 
      VALUES ('username', 0, 0, 1) 
      ON DUPLICATE KEY UPDATE joined=VALUES(1); 

Fondamentalement, je veux seulement insérer une nouvelle ligne si le nom d'utilisateur n'existe pas et si elle fait alors je veux changer la colonne jointe dans leur ligne à 1. La colonne Mon nom d'utilisateur est définie à la fois sur la CLÉ PRIMAIRE et sur une CLÉ UNIQUE.

+0

pourrait vous envoyer structure de la table? et qu'est-ce qui est «joint»? est-ce un nom de colonne? – Ravi

+0

pourquoi votre étiquette de question avec mysql et sql-server ?? Pouvez-vous mettre à jour votre question avec seulement une base de données qui sur vous face à ce problème.5 –

+1

Selon la [documentation] (https://dev.mysql.com/doc/refman/5.7/fr/insert-on-duplicate.html), il doit être 'joint = 1' – AKSW

Répondre

2

La fonction values(col_name) accepte un nom de colonne comme argument lorsqu'elle est utilisée avec ON DUPLICATE KEYS et que vous transmettez un entier. Je pense que vous avez besoin d'essayer quelque chose comme ceci:

INSERT INTO ptable(username, p, roll, joined) 
      VALUES ('username', 0, 0, 1) 
    ON DUPLICATE KEY UPDATE joined = 1; 

pour plus d'informations consultez la documentation dev.mysql.com/doc

+0

Oui. 'VALUES (1)' signifie la valeur de la colonne '1', qui n'existe pas. «1» signifie la valeur de un. – tadman

+0

Ou 'VALEURS (jointes)' – shmosel