2016-06-29 1 views
0

Je suis en train d'insérer les nouveaux enregistrements dans le tableau, j'ai deux colonnesC# mysql requête d'insertion, si l'enregistrement existe à jour alors

 user_records 
------------------------ 
| Attribute | Datatype | 
|------------------------| 
| user_id | varchar(25)| 
| count  | int  | 
------------------------ 

Requête:

INSERT into user_records Values("nix_1", 0) 

mais si l'utilisateur existe déjà , alors il devrait augmenter compter de 1

Répondre

0

Pourquoi ne pas utiliser la syntaxe INSERT ... ON DUPLICATE KEY?

INSERT INTO user_records (user_id, count) VALUES ('nix_1', 0) 
ON DUPLICATE KEY UPDATE count = count + 1; 

http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

+0

J'ai essayé 'INSERT INTO VALUES user_records ('nix_1', 0) sur le nombre de DUPLICATE KEY UPDATE = count + 1' mais il donne l'erreur' mot-clé non reconnue (près ON) ',' Unrecognized keyword (near DUPLICATE) ',' Mot clé non reconnu (Near Key) '. – Nixi

+0

Quelle version de MySQL et quel moteur de données? – Nicarus

+0

J'utilise xampp avec sql version 'Version client de base de données: libmysql - mysqlnd 5.0.12-dev' et XAMPP' Version 3.22' – Nixi

0

Vous auriez vérifier si l'enregistrement existe avant de tenter de INSERT. Votre requête devrait être quelque chose en ligne avec ci-dessous. L'exemple fonctionne dans SQL Server.

DECLARE @sUserID VARCHAR(25) = "nix_1"; // This should be the parameter passed on into the stored procedure 

IF EXISTS(SELECT user_id FROM WHERE user_id = @sUserID) 
    // Increase the count 
    UPDATE user_records SET count = count + 1 
     WHERE user_id = @sUserID 
ELSE 
    // Insert new record 
    INSERT INTO user_records Values (@sUserID , 0) 

S'il vous plaît se référer aux liens ci-dessous pour info sur EXIST

EXISTS (Transact-SQL)

SQL EXISTS Operator

Difference between EXISTS and IN in SQL?