выберите счетчик (*) неверный результат, кеш или что? - PullRequest
2 голосов
/ 26 марта 2012

У меня есть SQL-запрос, где я считаю количество строк

SELECT count(*) AS `nr` FROM `ordine` WHERE (ditta_id = '3') AND (YEAR(`data`) = '2012') AND (stato = 'approvato' or stato = 'consegnato') LIMIT 1

Я обновляю некоторую строку, изменяющую стато, на 'Approvato', иногда count () дает мне правильный номер, иногда он дает мне старый номер

Вот часть моих бревен:

2012-03-23T10:42:45+01:00 DEBUG (7): Row id = 1809
2012-03-23T10:42:45+01:00 DEBUG (7): SELECT count(*) AS `nr` FROM `ordine` WHERE (ditta_id = '3') AND (YEAR(`data`) = '2012') AND (stato = 'approvato' or stato = 'consegnato') LIMIT 1
2012-03-23T10:42:45+01:00 DEBUG (7): Result = 140
...change stato into 'approvato' thus count must give me 141 next time, requery the row, check changes are saved


2012-03-23T10:44:52+01:00 DEBUG (7): Row id = 1810
2012-03-23T10:44:52+01:00 DEBUG (7): SELECT count(*) AS `nr` FROM `ordine` WHERE (ditta_id = '3') AND (YEAR(`data`) = '2012') AND (stato = 'approvato' or stato = 'consegnato') LIMIT 1
2012-03-23T10:44:52+01:00 DEBUG (7): Result = 140 ?!!! why not 141?

ditta_id, agente_id, stato - это индексы

Я использую Zend Framework 1.11.11 и MySQL 5.1.49-3

1 Ответ

3 голосов
/ 26 марта 2012

Для строки, которую вы обновили, я предполагаю, что одно из следующего является истинным ...

  • ditta_id не '3'
  • YEAR(data) не '2012'
  • stato уже 'approvato'
  • stato уже 'consegnato'
  • Новое значение в stato содержит опечатку

Можете ли вы показать нам эти поля до и после изменения поля stato?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...