sql >> Databasteknik >  >> RDS >> Mysql

Hur vet man om en MySQL UPDATE-fråga misslyckas eftersom information som tillhandahålls matchar data som redan finns i databasen?

En annan anledning till att du skulle få 0 berörda rader är om UPDATE uttalande matchar inga rader. Till exempel:

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

Ger 0 påverkade rader om det inte finns någon rad med id = 1234 . Detta är inte heller ett fel, det är bara en UPDATE som råkade matcha inga rader.

Sättet att upptäcka detta fall är att använda SELECT för att verifiera att det finns en sådan rad. Om du kan bekräfta att raden finns, men UPDATE sa att det påverkade 0 rader, då vet du att värdena du försökte ändra faktiskt var de rader som redan fanns i databasen.

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

Men skillnaden kanske inte är viktig. Du kan rapportera ett fel om mysql_error() säger att det finns en, som @BoltClock föreslår.*Om det inte finns något fel kan du bara rapportera "ingen förändring" till användaren.



  1. SQL:Hur kan jag uppdatera ett värde i en kolumn endast om det värdet är null?

  2. MySQL-replikering:Felaktiga transaktioner i GTID-baserad replikering

  3. virtualenv, mysql-python, pip:någon som vet hur?

  4. Hur man infogar BOOL-värde i MySQL-databasen