SQL删除报错
解决方法 第一步:检查并列出所有触发器 先看看这个表到底挂了哪些触发器。 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