使用条件设置行级安全性

3
在我的SQL数据库中,我有多个用户,他们具有不同的权限来更新/删除某些表中的数据。是否可以根据特定表列中的值为用户授予权限?让我更好地解释一下:假设用户有权限从该表中删除数据,但仅在该行中的列值为true时才允许删除该行。如果是true,则允许删除该行;如果是false,则不允许删除。

创建一个视图,类似于 从YourTable选择* WHERE COLUMN为TRUE。现在在此视图中授予DELETE权限。我不确定这是否有效。 - Jithin Shaji
1
问题比那更加复杂。我不能仅使用真实的列来完成它。它在我的应用程序中使用了很多次。太多了,无法在它们中更改该视图或进行2个单独的视图。我需要应用带条件的删除权限。 - Whencesoever
1个回答

2

我觉得可以通过在插入、更新和删除时使用触发器来实现。您需要拥有包含用户权限映射的表格/表格,并在更改值之前检查权限。 但是,您真的需要这个吗?如果有很多更改,那将会是一场灾难...另一个问题是,您确实需要在SQL Server中实现此方案吗?我认为最好在应用程序层中检查权限-假设您有一个应用程序


我的另一个想法实际上是使用触发器。那么在 SQL 层面无法根据特定行的条件授予权限吗? - Whencesoever
不幸的是,它在50-60个不同的场景中被使用,人们可以删除那些数据,我想要添加一些权限级别。 - Whencesoever
我找到了这个链接: http://www.mssqltips.com/sqlservertip/3030/implementing-sql-server-row-and-cell-level-security/ 和这个链接: http://blogs.msdn.com/b/publicsector/archive/2011/08/23/row-level-security-for-sql-server-2008.aspx 请检查它们是否符合您的情况。 - sdrzymala
我决定再做一些表,并通过索引的存在进行验证,不允许删除。 - Whencesoever

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接