当前位置:网站首页>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中并没有提供已定义者身份执行的这种方式。
边栏推荐
- Glass mosaic
- 想请教股票开户要认识谁?在线开户是安全么?
- 每日三题 6.30(2)
- 云信小课堂 | IM及音视频中常见的认知误区
- Timer和ScheduledThreadPoolExecutor的区别
- CADD course learning (3) -- target drug interaction
- Redis数据类型和应用场景
- CADD课程学习(3)-- 靶点药物相互作用
- YOGA27多维一体电脑,兼具出色外观与高端配置
- Aaai22 | structural tagging and interaction modeling: a "slim" network for graph classification
猜你喜欢

问题随记 —— /usr/bin/perl is needed by MySQL-server-5.1.73-1.glibc23.x86_64

You probably haven't noticed the very important testing strategy in your work

2022年R1快开门式压力容器操作考题及答案

CKS CKA ckad change terminal to remote desktop

Advanced skills of testers: a guide to the application of unit test reports

What category does the Internet of things application technology major belong to

MySQL binlog cleanup

为什么PHP叫超文本预处理器

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

Redis数据类型和应用场景
随机推荐
Jerry's burning of upper version materials requires [chapter]
Daily three questions 6.29
Switch to software testing, knowing these four points is enough!
马赛克后挡板是什么?
Y53. Chapter III kubernetes from introduction to mastery -- ingress (26)
Jielizhi Bluetooth headset quality control and production skills [chapter]
物联网技术应用属于什么专业分类
Glass mosaic
dat. GUI
dat.GUI
2022 crane driver (limited to bridge crane) examination questions and simulation examination
Notes to problems - file /usr/share/mysql/charsets/readme from install of mysql-server-5.1.73-1 glibc23.x86_ 64 c
Detailed explanation of twenty common software testing methods (the most complete in History)
AirServer最新Win64位个人版投屏软件
认识--Matplotlib
rviz打开后如何显示实时2D地图
YOGA27多维一体电脑,兼具出色外观与高端配置
Is it safe to choose mobile phone for stock trading account opening in Shanghai?
MT manager test skiing Adventure
SWT / anr problem - SWT causes low memory killer (LMK)