• 定制默认系统帐号不能被更新与删除


    最近的专案使用这个功能,开发时为程序使用了就定了一个系统帐号如sa,由于某些要求,此帐号不能被更改或是删除,但用户可以添加其它帐号。可以参考下面动画。

    实现这样的功能,也许方法有很多种。Insus.NET使用了SQL的触发器(Trigger),在删除或是更新做了触发。

    更新触发器,sa帐号不能被用户更新:

    tri_Users_Update
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    --
     Author:        Insus.NET
    --
     Create date: 2012-03-03
    --
     Description:    Disable update system account.
    --
     =============================================
    CREATE TRIGGER [dbo].[tri_Users_Update]
       ON  [dbo].[Users]
       FOR UPDATE
    AS 
    BEGIN    
        IF @@ROWCOUNT = 0 
            RETURN
        SET NOCOUNT ON;
        
        DECLARE @UsersId INT,@Account NVARCHAR(100)    
        SELECT @UsersId = [UsersId] FROM deleted
        SELECT @Account = [Account] FROM inserted
        IF @UsersId = 1 and @Account <> N'sa'
        BEGIN
            RAISERROR(N'系统帐号,不能更新。',16,1)
            ROLLBACK TRANSACTION
        END
            
    END

     删除触发器,sa帐号不能被用户删除。:

    tri_Users_Delete
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    --
     Author:        Insus.NET
    --
     Create date: 2012-03-03
    --
     Description:    Disable delete system account.
    --
     =============================================
    ALTER TRIGGER [dbo].[tri_Users_Delete]
       ON  [dbo].[Users]
       FOR DELETE
    AS 
    BEGIN    
        IF @@ROWCOUNT = 0 RETURN
        SET NOCOUNT ON;
        
        DECLARE @UsersId INT,@Account NVARCHAR(100)
        
         SELECT @UsersId = [UsersId],@Account = [Account] FROM deleted
        IF @UsersId = 1 OR @Account = 'sa'
        BEGIN
            RAISERROR(N'系统帐号,不能删除。',16,1)
            ROLLBACK TRANSACTION
        END
            
    END
  • 相关阅读:
    java集合类散列表
    记北京挤地铁
    是你的努力,吗?
    letswave-脑电数据处理流程总记
    赵丽颖结婚了,分析下网友评论
    自动线性回归
    ggplot2+treemapify了解一下?
    样本方差的性质及其应用
    5 域名
    4 HTTP的“四层”和“七层”
  • 原文地址:https://www.cnblogs.com/insus/p/2385104.html
Copyright © 2020-2023  润新知