2011-12-29 87 views
3

我有一个包含重复userId行的表。我试图删除行的作为从表中删除行时的权限

delete from table_name where userId=123

这个查询只能如果我给两个选择和删除权限的数据库。是否必须授予选择权限?

回答

3

目标表上需要DELETE权限。如果语句包含WHERE子句,则还需要SELECT权限。这里是从微软的链接,请参阅权限部分

http://msdn.microsoft.com/en-us/library/ms189835.aspx

+0

你知道它为什么如此吗?如果* DELETE *语句包含* WHERE *子句,为什么删除行时除* DELETE *权限外还需要* SELECT *权限? – Lion 2011-12-29 22:19:00

+0

我不知道为什么,但我的猜测是,sql服务器引擎可能会首先执行SELECT(它需要选择权限)以获取满足条件的行,然后执行DELETE。 – kosa 2011-12-29 22:27:53

+0

我在这里找到了一些关于这方面的信息http://sqlblog.com/blogs/linchi_shea/archive/2011/10/17/is-the-select-permission-checked-in-an-update-statement.aspx – Naveen 2011-12-29 22:30:05