兩者之間的區別是什麼?在這兩種情況下?在這個函數上授予的特權會發生什麼?在兩種情況下都會自動撤銷,並且在重新創建時必須重新提供?請解釋一下。創建或更換v/s刪除某個功能並重新創建它
6
A
回答
14
當一個對象被丟棄時,與它關聯的所有東西都會被丟棄,包括特權。 CREATE OR REPLACE並非如此。
SQL> create procedure p1 is
2 begin
3 null;
4 end;
5/
Procedure created.
SQL> grant execute on p1 to xyz;
Grant succeeded.
SQL> select * from user_tab_privs_made
2/
GRANTEE TABLE_NAME GRANTOR PRIVILEGE GRA HIE
------------------------------ ------------------------------ ------------------------------ ---------------------------------------- --- ---
XYZ P1 APC EXECUTE NO NO
SQL> create or replace procedure p1 is
2 n pls_integer;
3 begin
4 n := 1;
5 end;
6/
Procedure created.
SQL> select * from user_tab_privs_made
2/
GRANTEE TABLE_NAME GRANTOR PRIVILEGE GRA HIE
------------------------------ ------------------------------ ------------------------------ ---------------------------------------- --- ---
XYZ P1 APC EXECUTE NO NO
SQL> drop procedure p1;
Procedure dropped.
SQL> create or replace procedure p1 (p in out pls_integer) is
2 begin
3 p := p+1;
4 end;
5/
Procedure created.
SQL> select * from user_tab_privs_made
2/
no rows selected
SQL>
4
如果要更換功能,我相信,特權保持不變,雖然我平時喜歡創建公共同義詞和權限授予那些。
REPLACE是在對象定義(DDL)用於 覆蓋舊的客體定義一個新的可選關鍵字。它在定義修改 過程中保留對象的 訪問權限。如果該對象被刪除並重新創建,但是,其 權限會丟失。
相關問題
- 1. Ormlite 4.9上創建表,並創建或更新功能改變
- 2. 更新表或刪除並重新創建?
- 3. 刪除並創建VS搜索並更新jquery
- 4. 刪除並重新創建主鍵
- 5. 刪除並重新創建約束
- 6. 更快:重新創建或清除()?
- 7. 更新或刪除現有文件並創建新文件
- 8. 刪除數據庫並重新創建它
- 9. 創建或更新的Rails 4 - 更新,但還創建(重構)
- 10. 刪除一個目錄,重新創建它並向它添加文件
- 11. 創建目錄並最終刪除它
- 12. 如何清除/刪除表,並重新創建它並在django中填充
- 13. 更快地操作現有的HTML或刪除HTML,然後重新創建它?
- 14. 截斷或刪除並創建表
- 15. P4 Perforce取消刪除或重新創建刪除更改列表
- 16. CouchDB刪除並重新創建一個文檔
- 17. 刪除並重新創建單個表格(在Heroku上)
- 18. 刪除並重新創建一個片段中的mapview android
- 19. django重新創建刪除表
- 20. Pod刪除後重新創建
- 21. 刪除文件vs目錄+重新創建表現
- 22. 從表1創建或更新列,並從表2創建或更新列
- 23. 創建一個定時器並且不能重新啓動它
- 24. CANT創建或刪除SYNONYM
- 25. Java重命名舊目錄或刪除它以創建一個新目錄
- 26. 重新創建CheckedTextView的功能
- 27. 如何刪除整個數據庫並使用sql和c#重新創建它?
- 28. 刪除並創建dynamoDB表
- 29. 創建的更新和刪除級聯
- 30. git工作流,創建本地分支刪除並重新創建
可能是錯的,但審計歷史是否也維護? – Rob