2011-12-29 86 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