博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定制默认系统帐号不能被更新与删除
阅读量:7059 次
发布时间:2019-06-28

本文共 1410 字,大约阅读时间需要 4 分钟。

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

 

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

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

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

ExpandedBlockStart.gif
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

 

转载地址:http://qkfll.baihongyu.com/

你可能感兴趣的文章
《Node.js区块链开发》一2.5 风险提示
查看>>
《从Excel到R 数据分析进阶指南》一2.7 查看列名称
查看>>
《Origin 9.0科技绘图与数据分析超级学习手册》一2.2 窗口类型
查看>>
Apache Kylin权威指南2.2 在Hive中准备数据
查看>>
《Visual Basic 2012入门经典》----1.2 新建项目
查看>>
《Python高手之路(第3版)》——1.5 Joshua Harlow访谈
查看>>
《精通Python网络爬虫:核心技术、框架与项目实战》——3.5 身份识别
查看>>
机器视觉:为什么追踪网球的技术不能用在足球和篮球上?
查看>>
《Linux/UNIX OpenLDAP实战指南》——1.8 自动化运维解决方案
查看>>
性能优化:使用ramlog将日志文件转移到内存中
查看>>
Android应用性能优化最佳实践.2.2 性能分析工具
查看>>
Java创建线程安全的方法
查看>>
【资料合集】Apache Flink 精选PDF下载
查看>>
gh-ost:不一样的在线表结构变更
查看>>
struts2 获得request session application的四种方式
查看>>
通过数据云解决方案DBaaS
查看>>
Jsp实现页面forEach循环遍历多条数据的显示和后台对应数据的获取(strurs1)实现
查看>>
NSSet集合
查看>>
死磕Tomcat7源码之一:解析web.xml
查看>>
Tomcat访问路径去掉项目名称
查看>>