Возможные причины
a) вы подсчитываете количество возвращенных строк (это ОДНА), а не значение внутри этой возвращаемой строки
b) у вас есть незафиксированная транзакция вставки , что означает SQL Разработчик не может его увидеть
Но в любом случае ваш комментарий, в котором вы сказали: «После того, как я сделаю эту проверку, я продолжу вставлять строки», тогда ваш метод все равно необходимо пересмотреть.
Концепция: сначала запросить наличие, а затем вставить, если нет, в основном ошибочна, если только она не поддерживается через соответствующее ограничение базы данных или аналогичный режим блокировки. Потому что в противном случае вы попадете в ситуацию:
Сессия 1 - проверка на наличие, ничего не найдено, все в порядке, делаем вставку ... Сессия 2 - проверка на наличие, ничего не найдено, мы ' re ОК, сделайте вставку ... Сессия 1 - фиксация Сессия 2 - фиксация
и вуаля ... у вас есть несколько вхождений значения, когда вы ожидали только 1.
Если вы действительно ли определено соответствующее уникальное ограничение / индекс, тогда вам вообще не нужно выполнять проверку счетчика, потому что вставка либо сработает, либо будет отклонена как дубликат. Меньше кода и нет проблем с повреждением данных.