我要投稿
  • 您当前的位置:57365.com -> 技术教程 -> 数据库教程 -> Mysql教程 -> 教程内容
  • [ 收藏本页教程 ]
  • 实现MySQL里动态视图的方法

    教程作者:佚名    教程来源:不详   教程栏目:Mysql教程    收藏本页

    需求:
    用户为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变量里面
    然后建立自定义函数,返回这个变量
    最后在视图里面调用这个函数

    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.hxswjs.com All Rights Reserved.57365.com 版权所有