加入收藏 | 设为首页 | 会员中心 | 我要投稿 上海站长网 (https://www.021zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在MySQL里如何实现动态视图

发布时间:2022-10-14 13:31:08 所属栏目:MsSql教程 来源:未知
导读: 需求:
用户为C/S结构,每个用户根据角色不同,能看到不同的数据。系统会根据某个标识生成一个数据内容,然后通过统一的视图来访问。
要求mssql 使用视图,不能修改视图,也不能在试图外面

需求:

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

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

设计:

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

代码:

droptableifexiststest;

createtabletest(

idintnotnull,

namevarchar(20)notnull

);

insertintotestvalues(1,'test1');

insertintotestvalues(1,'test11');

insertintotestvalues(1,'test111');

insertintotestvalues(2,'test2');

insertintotestvalues(2,'test22');

dropfunctionifexistsgetSpid;

delimiter|

CREATEfunctiongetSpid()

RETURNSint

RETURN@spid;

|

delimiter;

dropviewifexistsv_test;

createviewv_testas

select*fromtestwhereid=getSpid();

--测试代码

--开启session1

set@spid=1;

select*fromv_test;

--开启session2

set@spid=2;

select*fromv_test;

说明:将生成的ID保持到session变量里面,然后建立自定义函数,返回这个变量,最后在视图里面调用这个函数

(编辑:上海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!