当前位置:网站首页>Oracle中已定义者身份执行函数AUTHID DEFINER与Postgresql行为的异同
Oracle中已定义者身份执行函数AUTHID DEFINER与Postgresql行为的异同
2022-07-01 22:57:00 【mingjie73】
Oracle行为
Oracle中函数可以定义执行函数体时,使用哪个用户的权限:
[AUTHID { CURRENT_USER|DEFINER}]
CURRENT_USER已当前用户身份执行函数体
DEFINER已定义者的身份执行函数体
CASE1:例如下面函数会使用当前用户执行函数体,如果当前用户对tbl1读权限就可以成功执行。
CREATE OR REPLACE PROCEDURE TEST_P AUTHID CURRENT_USER IS
BEGIN
EXECUTE IMMEDIATE 'select * from tbl1';
END TEST_P;
CASE2:下面函数会使用定义函数的用户执行函数体,如果定义函数的用户对tbl1读权限就可以成功执行。
CREATE OR REPLACE PROCEDURE TEST_P AUTHID DEFINER IS
BEGIN
EXECUTE IMMEDIATE 'select * from tbl1';
END TEST_P;
PG 行为
PG中执行函数永远是使用当前用户的权限来执行的,类似Oracle中AUTHID CURRENT_USER的概念。
例如user1创建表
drop table u1tbl;
create table u1tbl(i int);
insert into u1tbl values (123);
user2无权限查询
postgres=> select * from u1tbl;
ERROR: permission denied for table u1tbl
user1创建函数
drop function f1();
CREATE OR REPLACE FUNCTION f1() RETURNS int AS $$
DECLARE
id int;
BEGIN
select i into id from u1tbl;
return id;
END;
$$ LANGUAGE plpgsql;
user2执行函数
postgres=> select f1();
ERROR: permission denied for table u1tbl
CONTEXT: SQL statement "select i from u1tbl"
PL/pgSQL function f1() line 5 at SQL statement
可见PG中并没有提供已定义者身份执行的这种方式。
边栏推荐
- from pip._internal.cli.main import main ModuleNotFoundError: No module named ‘pip‘
- 云信小课堂 | IM及音视频中常见的认知误区
- 认识--Matplotlib
- flutter Unable to load asset: assets/images/888. png
- mt管理器测试滑雪大冒险
- Jielizhi, production line assembly link [chapter]
- STM32F030F4驱动TIM1637数码管芯片
- Linux基础 —— CentOS7 离线安装 MySQL
- 神经网络物联网的未来趋势与发展
- 【微服务|Sentinel】sentinel整合openfeign
猜你喜欢

玻璃马赛克

flutter Unable to load asset: assets/images/888.png

from pip._internal.cli.main import main ModuleNotFoundError: No module named ‘pip‘

CKS CKA CKAD 将终端更改为远程桌面
![Jielizhi Bluetooth headset quality control and production skills [chapter]](/img/ad/28e7461f8c5dc5c54a3f4da0c111ac.png)
Jielizhi Bluetooth headset quality control and production skills [chapter]
![[kotlin third party] coil koltin collaboration picture loading library coil glide like picture loading third party](/img/ad/dcb993c3e1e79d2c3663f031dfd1b3.png)
[kotlin third party] coil koltin collaboration picture loading library coil glide like picture loading third party

2022 crane driver (limited to bridge crane) examination questions and simulation examination

Detailed explanation of twenty common software testing methods (the most complete in History)

2022安全员-C证考试题模拟考试题库及模拟考试

Notes on problems - /usr/bin/perl is needed by mysql-server-5.1.73-1 glibc23.x86_ sixty-four
随机推荐
Jielizhi, production line assembly link [chapter]
[MySQL] database optimization method
Matplotlib常用設置
会声会影2022智能、快速、简单的视频剪辑软件
关于游戏性能优化的一些感想
每日三题 6.28
Development trend and future direction of neural network Internet of things
from pip._ internal. cli. main import main ModuleNotFoundError: No module named ‘pip‘
玻璃马赛克
SWT / anr problem - SWT causes kernel fuse deadlock
Practical application and extension of plain framework
每日三题 6.30
Jielizhi Bluetooth headset quality control and production skills [chapter]
[micro service sentinel] sentinelresourceaspect details
from pip._internal.cli.main import main ModuleNotFoundError: No module named ‘pip‘
Treatment of insufficient space in the root partition of armbain system
Yunxin small class | common cognitive misunderstandings in IM and audio and video
RPA: Bank digitalization, business process automation "a small step", and loan review efficiency "a big step"
win 10 mstsc连接 RemoteApp
flutter Unable to load asset: assets/images/888. png