AUTHID CURRENT_USER的注意點
1.在A和B使用者下同時建立如下測試表和資料
A:
create
table
tb_test(a
varchar2
(
50
));
insert
into
tb_test
select
1
from
dual;
insert
into
tb_test
select
2
from
dual;
insert
into
tb_test
select
3
from
dual;
commit
;
B:
create
table
tb_test(a
varchar2
(
50
));
insert
into
tb_test
select
1
from
dual;
insert
into
tb_test
select
2
from
dual;
insert
into
tb_test
select
3
from
dual;
commit
;
2.在A下建立儲存過程並授權給B,注意這裡的
AUTHID
CURRENT_USER
CREATE
OR
REPLACE
PROCEDURE
pd_test
AUTHID
CURRENT_USER
IS
BEGIN
UPDATE
tb_test
SET
a =
'abc'
;
COMMIT
;
END
pd_test;
GRANT
EXECUTE
ON
pd_test
to
B;
3.在使用者B下去執行pd_test時,會發現B使用者下的tb_test表資料被更新成abc,而A使用者下的tb_test資料表未被更新
如果不加
AUTHID
CURRENT_USER,
則A使用者下的tb_test表資料被更新成abc,而B使用者下的tb_test資料表未被更新
關於
AUTHID
CURRENT_USER
的解釋
:
這是典型的,資料庫中只建立一個儲存過程,所有使用者都可以使用,但是每個使用者使用的時候只是用自己的許可權許可權執行,oracle自己的包很多都這樣的 。
儲存過程預設是用定義者definer的身份呼叫的,如果加上AUTHID CURRENT_USER,則用當前登陸的使用者許可權呼叫,如果該過程的呼叫者(而非定義者)被授與系統許可權execute any procedure或是被該過程的定義者grant execute on授權的話,不用這個AUTHID CURRENT_USER子句,呼叫者照樣可以使用這個過程。
另外,在Oracle的儲存過程中,如果涉及到操作不同schema下的物件的時候,可以在不同的schema下寫相同的procedure,但這樣帶來的問題是維護和同步帶來了麻煩。
在procedure中加上authid current_user,來說明procedure中操作的物件是當前連線使用者的物件而並不是procedure所屬使用者下的物件。所以在
procedure中的DML語句也是在當前連線使用者的物件去操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29812844/viewspace-2658343/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- vector的使用注意點
- 安裝pybrain的注意點AI
- CSS中will-change的注意點CSS
- Golang switch case 的使用注意點Golang
- MySQL的clone(克隆)要注意的點MySql
- 119 路由注意點路由
- 分享mysql注意點MySql
- FMDB 使用注意點
- 錫焊注意點
- 寫小說主要注意的點
- Collectors.toMap的幾個注意點
- 說點JSON使用的注意事項JSON
- MYSQL 8.0 Upgrade &Downgrade的幾點注意MySql
- Flink - Checkpoint配置注意點
- PHP 抽象類繼承抽象類時的注意點PHP 抽象類繼承抽象類時的注意點PHP抽象繼承
- mysql寫function時的注意點記錄MySqlFunction
- 介面文件設計的12個注意點
- Python Enum 使用的幾點注意事項Python
- 關於CORS 應該注意的幾點CORS
- LeetCode BFS題目以及要注意的點LeetCode
- wordpress的save_post鉤子注意點
- golang split需要注意的一個點Golang
- 新版idea配置maven注意點!!IdeaMaven
- 型別轉換注意點型別
- CUDA常用概念及注意點
- 關於MongoDB的幾點注意事項UMMongoDB
- Spring-Cloud整合Spring-Session的注意點SpringCloudSession
- Spring事務需要注意的幾個點Spring
- 【Net】StreamWriter.Write 的一點注意事項
- 關於golang隨機種子的注意點Golang隨機
- java Spring讀取properties檔案的注意點JavaSpring
- 幾點需要注意選擇APP開發外包團隊的注意事項APP
- @1-MYSQL當前使用者user()與current_user()MySql
- Spring Boot退出登入注意點Spring Boot
- spark效能優化幾點注意Spark優化
- PHP日常注意點-記錄1PHP
- python中math.log注意點Python
- checkbox name屬性值注意點