可以吗?如果实在没有办法,建个snap是否也可以解决?请老兄给个代码,就对上面我的例子进行操作

解决方案 »

  1.   

    create synonym test1.table1 fro test2.table2;select * from table2;
      

  2.   

    sorrycreate synonym test1.table1 for test2.table2;
      

  3.   

    是这样的,我在test2下使用的名字还必须是table1,因为是两个系统的整合,我试了,上面的方法不能建立不同用户下的相同的对象名
      

  4.   

    也就是在test2下调用的语句,还是select * from table1;
      

  5.   

    sorrycreate synonym test1.table1 for test2.table2;
      

  6.   

    呵呵,自已搞错了create public synonym table2 for test1.table1;
      

  7.   

    beckhambobo(beckham) 的办法可以啊
    不同用户下的对象名是可以一样的
    如在user2下有一个表aaa
    先在user2下grant select on aaa to user1
    在user1下
    create synonym aaa for test2.aaa;
    然后就可以在user1下
    select * from aaa;
      

  8.   

    不一定要是public同义词
    如果建成public同义词
    必须grant select on table to public.
    一样,可以实现在user1下
    select * from table
    (不仅是user1了,这样每个用户下都可以这样访问的了)
      

  9.   

    谢谢beckhambobo,penitent(只取一瓢),penitent(只取一瓢) 三位老兄。该问题得到了解决。谢谢,要是授权以后直接可以调用,不通过一次同步就更好了。
      

  10.   

    也不一定在user1下创建同义词,只要记得在user2下赋予足够权限给user1就可以了。
      

  11.   

    关键是我不能在test2下出现test1,如:select * from table1,而不是select * from test1.table1
      

  12.   

    当然,这是不使用synonym 的情况,使用synonym 可以解决这个问题,但同时也添加了不少的工作量,需要在每个用户下,对30多个基础表做synonym ,如果只有授权即可解决问题,调用的时候,各个用户都可以直接对相同的名字操作,而该名字对应的实体对象只有一个。有否更好的解决方案?最好只用授权即可解决问题。
      

  13.   

    如果不用synonym,就没有更好的办法了
    你授权都可以做,为什么创建同义词就不能做呢?
      

  14.   

    谢谢penitent(只取一瓢) 兄的public synonym ,可以解决不同用户下相同的方法访问公用表的问题了。谢谢,散分