sql >> Databasteknik >  >> RDS >> Mysql

Varför MySQL-retur alltid är 1 i C#-kod men inte när jag testar i lagrad procedur?

Såvida du inte har ställt in UseAffected Rows alternativet för anslutningssträng, den är som standard falsk . Detta betyder :

Dessutom, från dokumentationen för ROW_COUNT funktion :

Alltså, UPDATE-användaren uttalande i din lagrade procedur kommer att returnera antalet rader som hittades av frågan, inte antalet som faktiskt uppdaterades.

För att åtgärda detta, antingen:

  1. Ange UseAffectedRows=true; i din anslutningssträng; detta kan orsaka ändringar av annan UPPDATERING frågor.
  2. Lägg till fler villkor i WHERE klausul, t.ex. WHERE ... AND SELLER_IMAGE_ID !=SellerImageID AND SELLER_BUSINESS_LOGO_ID !=BusinessImageID , för att se till att raden bara hittas och uppdateras om den faktiskt behöver ändras.



  1. MySQL - skapa vy med hjälp av subquery i FROM-satsen

  2. Uppdatera en MySQL-tabell med värden från en annan

  3. Ta bort alla rader utom första N från en tabell med en kolumn

  4. Endast mysqldump-schema, schemauppdatering utan släpp