sql-server - 为什么删除语句会影响附加行?
问题描述
更新:
我发现包含实际执行计划是添加额外行影响警告的罪魁祸首。
原始问题:
我正在删除数十万条不必要的记录,每批 100 条记录。
我的问题是,我在每 100 行删除指令后看到一个警告(1 行受影响),我想知道它可能是什么。
我的表没有任何触发器,也没有与级联的关系。那么,您是否知道其他可能会影响其他行的内容?
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
...
...
此外,在执行计划中,我没有看到对其他表或其他搜索的任何引用。
谢谢你。
解决方案
看起来通过显示执行计划引发了额外的行警告。
我已经删除了“包括实际执行计划”,现在它没有显示任何其他受影响的行。
谢谢你们。
推荐阅读
- blockchain - 我怎么知道我的以太坊节点同步低速或不同步
- node.js - 如何运行包括 Node.js 服务器的多个 shell 命令?Ubuntu
- python - 使用 osmnx 从自建图导入网络
- jquery - 如何用逗号分隔数据值
- python - 在 Django 中为多对多字段冲突反向访问器和查询?
- sql - 在 nvl 函数中使用 select 语句有什么问题吗?
- powershell - 用户输入作为命令行参数
- plugins - Netbeans 插件站点已关闭,导致 netbeans 无用
- dart - 为什么在没有实际调用 .iterator 的情况下返回迭代器?
- mysql - MYSQL:如何查找外键匹配的表数?