为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
JavaScript

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


 

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

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

5acf07290001405b00110016.jpgtri_Users_UpdateSET 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帐号不能被用户删除。:

5acf07290001405b00110016.jpgtri_Users_DeleteSET 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

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消