我的问题再次更具体: 如何通过视图修改数据,而不必在表上授予SELECT-Permissions?
我正在为我工作的公司设计和开发一个新的数据库。 业务规则说,允许用户仅访问表中的特定行。 所以我使用视图检查用户的权限,只返回那些用户有权访问的记录。
到目前为止,上帝。 但是,我必须使用INSTEAD-of-Triggers检查INSERT和UPDATE以及DELETE的权限。因为用户可以选择的行可能不是那些,他可以修改。
我的问题是: 当我有一个视图并授予SELECT,INSERT,UPDATE和DELETE权限时,它不起作用。当我插入到此视图中时,SQL Server希望在基表上执行INSERT-Permission。那不是问题。但是当我通过视图更新或删除行时,SQL Server需要在基表上授予SELECT和UPDATE / DELETE权限。 我不想在表上给出SELECT权限。
由于 克里斯
答案 0 :(得分:1)
我在想:
1 /通过在其定义中添加如下条件来限制VIEW行:
WHERE UserName = SUSER_SNAME()
or
WHERE UserName = CURRENT_USER()
或
2 /在相关视图中使用INSTEAD OF触发器。
P.S。实际上,不允许使用CREEC VIEW WITH EXECUTE。感谢您的留言。