sql >> Database >  >> RDS >> Mysql

Hoe weet ik of een MySQL UPDATE-query mislukt omdat de verstrekte informatie overeenkomt met gegevens die al in de database staan?

Een andere reden waarom u 0 betreffende rijen krijgt, is als de UPDATE verklaring komt overeen met geen rijen. Bijvoorbeeld:

UPDATE MyTable SET field = 'content' WHERE id = 1234;

Geeft 0 betrokken rijen als er geen rij bestaat met id = 1234 . Dit is ook geen fout, het is gewoon een UPDATE die toevallig geen rijen overeenkwam.

De manier om dit geval te detecteren is door SELECT . te gebruiken om te controleren of er zo'n rij is. Als u kunt bevestigen dat de rij bestaat, maar de UPDATE zei dat het 0 rijen beïnvloedde, dan weet je dat de waarden die je probeerde te veranderen in feite de rijen waren die al in de database stonden.

SELECT COUNT(*) FROM MyTable WHERE id = 1234;

Maar het onderscheid is misschien niet belangrijk. U kunt een fout melden als mysql_error() zegt dat er een is, zoals @BoltClock suggereert. *Als er geen fout is, kun je gewoon "geen verandering" aan de gebruiker melden.



  1. Waarden selecteren die aan verschillende voorwaarden voldoen op verschillende rijen?

  2. Relationele versus niet-relationele databases:wat is het verschil?

  3. Het beste uit PostgreSQL-logboeken halen

  4. MySQL REPLACE() – Vervang alle instanties van een substring door een andere string