Почему оператор удаления влияет на дополнительную строку? - PullRequest
0 голосов
/ 21 ноября 2018

ОБНОВЛЕНИЕ :

Я обнаружил, что включение фактического плана выполнения было причиной добавления этой дополнительной строки, затрагивающей предупреждение.

ОРИГИНАЛЬНЫЙ ВОПРОС:

Я удаляю несколько сотен тысяч ненужных записей в пакетах по 100 записей.

Мой вопрос заключается в том, что я вижу предупреждение (1затрагивается строка) после каждых 100 строк удаляет инструкцию, и мне интересно, что это может быть.

В моей таблице нет триггера, и она не связана с каскадами.Итак, знаете ли вы что-нибудь еще, что может повлиять на дополнительную строку?.

DECLARE @LOOP bit = 1

WHILE @LOOP = 1
BEGIN
  BEGIN TRANSACTION 

  DELETE TOP (100) FICHERO_ASIGNACION
  FROM FICHERO_ASIGNACION 
       INNER JOIN FICHERO ON FICHERO.FIC_KEY = FICHERO_ASIGNACION.FIC_KEY
  WHERE FAT_KEY = 4 and 
        CLI_COD is null and
        FIC_BUC = 'prd.factura-venta'

  PRINT '100 unneeded assignments deleted'
  IF @@ROWCOUNT = 0 SET @LOOP = 0
  COMMIT TRANSACTION
END

Это результат:

(100 rows affected)

(1 row affected)
100 unneeded assignments deleted
(100 rows affected)

(1 row affected)
100 unneeded assignments deleted
(100 rows affected)

(1 row affected)
100 unneeded assignments deleted
...
...

Кроме того, в плане выполнения я не имеюсм. любую ссылку на дополнительные таблицы или другие запросы.

enter image description here

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Похоже, что предупреждение о дополнительной строке было вызвано при отображении плана выполнения.

Я удалил «Включить фактический план выполнения», и теперь он не отображает никаких дополнительных затронутых строк.

Спасибо всем.

0 голосов
/ 21 ноября 2018

У меня отлично работает.отметьте здесь .Есть ли триггер на столе?.

...