Я никогда не сталкивался с этим раньше.Я пытаюсь убедиться, что запрос точный, поэтому я делаю это:
SELECT * FROM MyTable mt
JOIN OtherTable ot ON ot.ID = mt.OtherTableID
JOIN @tablevar tv ON tv.ID = mt.TableVarID;
DELETE mt FROM MyTable mt
JOIN OtherTable ot ON ot.ID = mt.OtherTableID
JOIN @tablevar tv ON tv.ID = mt.TableVarID;
SELECT @@ROWCOUNT;
SELECT * FROM MyTable mt
JOIN OtherTable ot ON ot.ID = mt.OtherTableID
JOIN @tablevar tv ON tv.ID = mt.TableVarID;
Цифры, которые я получаю, однако, странно отклоняются.Я получаю следующие результаты:
Таблица с 5208 строками
Успех - затронуто 51 строка
51
Пустая таблица
Часть, которую я не получаю, такова: условия выбора и удаления, насколько я могу судить, идентичны.Так почему же SELECT
возвращает 5 тыс. Строк, DELETE
удаляет 51 строку, @@ROWCOUNT
утверждает, что были затронуты только 51 строки, а окончательный SELECT
показывает, что было удалено правильное количество строк (5 КБ)?
Я знаю, что @@ROWCOUNT
довольно хрупкий - все перезапишет, почти.Поэтому я искал триггеры в рассматриваемой таблице и не нашел ни одного.
Кто-нибудь сталкивался с этим?