嗨专家 如何阻止数据库用户使用触发器删除表中的任何数据? 我只想管理员从表中删除数据
由于
答案 0 :(得分:7)
ü带走了用户的许可?如果你不想让他们做某事,那就“禁止”他们......这就是我们拥有权限的原因。
以下是有关如何撤消权限的详细信息:
答案 1 :(得分:6)
您想使用触发器的任何特殊原因?
您只需从要限制的用户中删除DELETE权限即可。请查看此处的“权限”部分:http://msdn.microsoft.com/en-us/library/ms189835.aspx
编辑:由于您说您确实想要使用触发器(但我认为您应该重新考虑),您可以创建一个表格,例如:
CREATE TABLE Restricted_Users
(
user_name VARCHAR(40) PRIMARY_KEY -- Use a size appropriate to your requirements
)
在所有表上创建INSTEAD OF DELETE
个触发器(这将是一件苦差事),它会检查USER_NAME()
表中的Restricted_Users
以及它们{ {1}}您可以调用EXIST
以使事务回滚并向用户显示消息。
请记住,您必须在添加到数据库的所有新表上维护这些触发器,并在每次添加/删除数据库中的用户时维护RAISERROR
表中的用户列表。
使用SQL Server中可用的权限系统(它的设计目的)使用具有为表设置的适当权限的角色会更简单很多。然后,在添加新用户时,您只需将它们分配给相应的角色,并为您处理删除权限。