首页 > 解决方案 > SQL触发器防止单行删除

问题描述

我有一张表,其中有一行数据,我不希望任何人删除它。表名称是 ProjectInProcessData。我想确保 ID 为 6050 的数据无法删除。我怎样才能做到这一点?

标签: sqltriggers

解决方案


    Create Trigger [dbo].[triggerPreventDeleteFormula]
         ON [dbo].[AHSC_Project_InprocessData]
    INSTEAD OF DELETE 
    AS
    BEGIN
      IF EXISTS(
    SELECT * 
    FROM deleted d
    where d.AHSC_Project_InprocessData_ID = '6610' or   d.AHSC_Project_InprocessData_ID = '6666'
    )
   BEGIN
    ROLLBACK;
    RAISERROR('Can not delete this record: this record contains default formula',16,1);
   END
   ELSE
     BEGIN
      DELETE [AHSC_Project_InprocessData]
       WHERE EXISTS (Select * from deleted d where d.AHSC_Project_InprocessData_ID = [AHSC_Project_InprocessData].AHSC_Project_InprocessData_ID)
      END
   END

推荐阅读