不允许插入、删除某些表数据的触发器

插入


USE [AdventureWorks]

GO


CREATE TRIGGER [Sales].[]iStore].[Store]

AFTER INSERT AS

BEGIN
   SET NOCOUNT ON;
   BEGIN TRY
      --判断是否插入记录的CustomerID字段是否已经在[Sales].[Individua]表中存在相同的记录
      IF EXISTS (SELECT * FROM inserted INNER JOIN [Sales].[individua]
      ON inserted.[CustomerID] = [Sales].[individua].[CustomerID])
      BEGIN
         --若有相同记录,则回滚事物
         IF @@TRANCOUNT > 0
         BEGIN
            ROLLBACK TRANSACTION;
         END
    END;
   END TRY
   BEGIN CATCH
      EXECUTE [dbo].[uspPrintError];
      --调用存储过程,在错误日志表中记录错误产生详情
      IF @@TRANSCOUNT > 0
      BEGIN
         ROLLBACK TRANSACTION;
      END
      EXECUTE [dbo].[uspPrintError];
   END CATCH;
END ;
GO


删除



USE [AdventureWorks]
GO

CREATE TRIGGER [HumanResources].[dEmployee] ON [HumanResouces].[Employee]
INSTEAD OF DELETE NOT FOR REPLICATION AS
BEGIN
   SET NOCOUNT ON;


   DECLARE @DeleteCount int;
   


   SELECT  @DeleteCount = COUNT(*) FROM deleted;
   IF @DeleteCount > 0  
   BEGIN
       RAISERROR
           (N'Employees cannot be deleted .They can only be marked as not current .',--message
                 10,--severity.
                 1);--State.

               --回滚事物
               IF @@TRANCOUNT > 0
               BEGIN
                  ROLLBACK TRANSACTION;
               END
            END;
         END;

          GO  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值