SQL删除报错

0 阅读1分钟

SQL删除报错

image.png

image.png

解决方法 第一步:检查并列出所有触发器 先看看这个表到底挂了哪些触发器。 sql

EXEC sp_helptrigger '[dbo].[SR_Material]';

第二步:尝试禁用所有触发器后删除

我们暂时禁用触发器,看看能否成功删除。如果能成功,说明就是触发器里的代码写错了(把 BIGINT 当 INT 用了)。

sql

-- 1. 禁用该表上的所有触发器
DISABLE TRIGGER ALL ON [dbo].[SR_Material];
GO

-- 2. 再次尝试删除 (使用变量确保万无一失)
DECLARE @TargetID BIGINT = 2490576863697567753;

BEGIN TRY
    DELETE FROM [dbo].[SR_Material] WHERE [ID] = @TargetID;
    PRINT '✅ 删除成功!问题确认是触发器导致的。';
END TRY
BEGIN CATCH
    PRINT '❌ 即使禁用触发器依然报错,错误信息:' + ERROR_MESSAGE();
END CATCH
GO

-- 3. 【重要】无论成功失败,都要重新启用触发器(如果是生产环境)
-- 如果上面删除成功了,你可以根据需求决定是否永久修复触发器,或者保持禁用(不推荐)
ENABLE TRIGGER ALL ON [dbo].[SR_Material];
GO