Интерфейс MySQL для С (MySQL C API) - mysql_affected_rows

ОГЛАВЛЕНИЕ

mysql_affected_rows

СИНТАКСИС:

    int mysql_affected_rows(MYSQL *mysql)

ОПИСАНИЕ:

    Возвращает число строк, на которые воздействует последний UPDATE, DELETE или INSERT.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

  • Целое число > 0 показывает число измененных строк.
  • Ноль, если никакие записи не соответствовали предложению WHERE в UPDATE или DELETE.
  • -1, если запрос возвратил ошибку, например, была сделана попытка добавить двойной первичный ключ в течение одного INSERT.

ПРИМЕР:

mysql_query(&mysql,"INSERT INTO gl_transact(acctnbr, amount) VALUES(12345,
            651.30)");
if (mysql_affected_rows(&mysql) < 0)
   fprintf(stderr, "Attempted to add duplicate primary key\n");

MySQL оптимизирован для случая удаления всех записей в таблице. Побочный эффект этой оптимизации - то, что MySQL возвратится, ноль для числа строк, на которые воздействовал в этой ситуации. Выполнение 'select count(*) from the_table' перед удалением всех записей даст Вам значение = на сколько строк воздействовала система, хотя это значение может изменяться между SELECT и DELETE. MySQL 3.20.X не поддерживает блокировку таблицы. Это исправлено в версии 3.21.X