zoukankan      html  css  js  c++  java
  • 定制默认系统帐号不能被更新与删除

    最近的专案使用这个功能,开发时为程序使用了就定了一个系统帐号如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
  • 相关阅读:
    sudo 之后 unable to resolve host的问题解决办法
    Linux 查找具体的文件名称
    linux 访问远程务器代码
    spark 安装配置
    R基本介绍
    BIEE多层表头报表的制作方法
    支付宝新漏洞引发恐慌,那如何关闭小额免密支付呢
    大家注意了,支付宝被曝重大安全漏洞,回应称正在跟进排查
    2017年5个不应该被忽视的机器学习项目
    婚前最后一次加班
  • 原文地址:https://www.cnblogs.com/insus/p/2385104.html
Copyright © 2011-2022 走看看