2017-05-17 67 views
0

我已經在這裏讀取Permissions for truncating a table您需要向用戶授予ALTER權限,以便他們能夠截斷表。但是,我仍然遇到問題,用戶被授予此角色時會截斷表。截斷表的問題WITH ALTER權限

enter image description here

enter image description here

任何想法,這是爲什麼?

PS。我自己作爲桌子的主人可以順便截斷。沒有其他人擁有ALTER權限。

+1

你可以在這裏找到答案:https://dba.stackexchange.com /問題/ 52828 /什麼的權限,是-必要換截斷-A-表 – Leila

回答

2

您所指的鏈接適用於MS SQL Server。 Leila評論中的鏈接也適用於SQL Server。

對於Oracle用戶must haveDROP ANY TABLE系統特權。

這反過來可能不是你想要的,因爲這個系統特權太破壞了。

湯姆凱特has你的問題的解決方案:

當然,這是存儲過程的全部意義。

要選擇性地給別人的abilitly截斷特定的表, 或全部通過一些模型所擁有的表,你會編:

create or replace procedure do_the_truncate as begin execute immediate 
'truncate table T'; end; 

或(任何通過一些模型所擁有的表,或如果該模式有 降大任於表私法任何表)

create or replace procedure do_the_truncate(p_tname in varchar2) as 
begin execute immediate 'truncate table ' || p_tname; end; 

,然後只授予對程序執行到需要 運行該命令的任何用戶。由於存儲過程與過程的所有者的基本權限 一起運行,因此不需要任何強大的權限,如 「drop any table」來截斷該表。

可以進一步提高do_the_truncate存儲過程有允許表的列表被截斷,以加強安全在您的系統