2017-09-04 1 views
0

Für meine Anwendung muss ich prüfen, ob Daten für eine Spalte existieren. Wenn vorhanden, fügen Sie sonst einen Wert 10 zu dem bestehenden Wert einen neuen Eintrag einfügenDatenbank aktualisieren wenn Daten vorhanden sind sonst In MySQL in einem einzigen Schritt einfügen

Ich versuche, so etwas wie dieses

UPDATE reporting set column_name1 = column_name1 + 10 WHERE column_name2 = "201"; 
IF ROW_COUNT()=0 THEN 
    INSERT INTO reporting (column_name1,column_name2) VALUES (15,201); 
END IF 

In meiner Tabelle column_name2 ist kein Primärschlüssel, und ich habe deaktiviert Sichere Prüfungen. aus diesem Grund kann ich nicht DUPLICATE KEY constraint.For dieser Abfrage verwenden, erhalte ich Syntaxfehler:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF @@ROWCOUNT=0 THEN INSERT INTO reporting (identifier,_9_2017) ' at line 1

die Syntax der If-Anweisung zu dem in MySQL Dokumentation https://dev.mysql.com/doc/refman/5.7/en/if.html ähnlich ist. Es gibt einige Fragen dazu in diesem Portal, aber ich konnte die richtige Antwort nicht finden (UPDATE if exists else INSERT in SQL). Wo gehe ich hier falsch?

+0

verwenden, wenn dies auf Ihre Situation zutrifft, aber MySQL hat eine 'INTO' REPLACE-Klausel, die Updates, wenn vorhanden, und Einsätze, wenn nicht. Sie können hier lesen: https://dev.mysql.com/doc/refman/5.7/en/replace.html –

Antwort

0

sollten Sie ROW_COUNT() wie dieses Ich weiß nicht,

SELECT ROW_COUNT(); 
+0

Auch nach der Verwendung von ROW_COUNT(), bleibt der Fehler in IF-Anweisung bestehen –

Verwandte Themen