mysql动态视图_如何实现MySQL里动态视图

针对C/S结构中用户角色不同查看不同数据的需求,文章提出了一种不修改视图且不使用外部查询的解决方案。通过生成唯一ID并关联视图,结合MySQL的session变量和自定义函数,实现了动态视图的效果。示例代码展示了如何创建和测试该方案。
摘要由CSDN通过智能技术生成

需求: 用户为C/S结构,每个用户根据角色不同,能看到不同的数据。系统会根据某个标识生成一个数据内容,然后通过统一的视图来访问。 要求,不能修改视图,也不能在试图外面再嵌套一层查询。 设计: 系统通过某种方法生成一个唯一的ID(可以是应用端,也可以

需求:

用户为C/S结构,每个用户根据角色不同,能看到不同的数据。系统会根据某个标识生成一个数据内容,然后通过统一的视图来访问。

要求,不能修改视图,也不能在试图外面再嵌套一层查询。

设计:

系统通过某种方法生成一个唯一的ID(可以是应用端,也可以是数据库的uuid),然后将试图与这个id进行关联即可。

代码:

drop table if exists test;

create table test (

id int not null,

name varchar(20) not null

);

insert into test values(1,'test1');

insert into test values(1,'test11');

insert into test values(1,'test111');

insert into test values(2,'test2');

insert into test values(2,'test22');

drop function if exists getSpid;

delimiter |

CREATE function getSpid()

RETURNS int

RETURN @spid;

|

delimiter ;

drop view if exists v_test;

create view v_test as

select * from test where id=getSpid();

-- 测试代码

-- 开启session 1

set @spid=1;

select * from v_test;

-- 开启session 2

set @spid=2;

select * from v_test;

说明:

将生成的ID保持到session变量里面

然后建立自定义函数,返回这个变量

最后在视图里面调用这个函数

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值