Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum ist die MySQL-Rückgabe im C#-Code immer 1, aber nicht, wenn ich in einer gespeicherten Prozedur teste?

Es sei denn, Sie haben UseAffectedRows gesetzt Connection-String-Option, ist sie standardmäßig false . Das bedeutet :

Zusätzlich aus der Dokumentation des ROW_COUNT Funktion :

Also der UPDATE user -Anweisung in Ihrer gespeicherten Prozedur gibt die Anzahl der Zeilen zurück, die von der Abfrage gefunden wurden, nicht die Anzahl, die tatsächlich aktualisiert wurde.

Um dies zu beheben, entweder:

  1. Setzen Sie UseAffectedRows=true; in Ihrer Verbindungszeichenfolge; dies kann zu Änderungen an anderen UPDATE führen Abfragen.
  2. Fügen Sie dem WHERE weitere Bedingungen hinzu Klausel, z. B. WHERE ... AND SELLER_IMAGE_ID != SellerImageID AND SELLER_BUSINESS_LOGO_ID != BusinessImageID , um sicherzustellen, dass die Zeile nur gefunden und aktualisiert wird, wenn sie tatsächlich geändert werden muss.