请问多个用户对一个表的权限问题。
用户user1\user2对table1都有增删改查的权限,如何让user1只能删改查user1所增加的记录,user2也只能删改查user2所增加的记录?
 ,谢谢。

解决方案 »

  1.   

    对table1建2个视图,将2个视图的权限分别授予user1,user2
    表中添一个user字段,比如user1添加的记录,user字段值为1,user2则为2
    授权视图table1_1给user1:select * from table1 where user=2;
    table1_2给user2:select * from table1 where user=1
      

  2.   

    关注,ORACLE做不到吧,
    对表的用户数据进行权限控制,这也太细了,自己做控制应该可以,在表里标志是谁增加的,在PLSQL里判断了,期待更好解决方案
      

  3.   

    给表添加以个字段用于区分是哪个用户添加的记录,然后根据这个字段的值建两个视图。
    [TEST@ora10gr1#2009-11-20/08:15:28] SQL>create table test(user_name varchar(20),infor varchar(10));Table created.[TEST@ora10gr1#2009-11-20/08:16:42] SQL>create or replace view test_test01 as
      2  select * from test where user_name='test01'
      3  with check option;View created.[TEST@ora10gr1#2009-11-20/08:17:45] SQL>create or replace view test_test02 as
      2  select * from test where user_name='test02'
      3  with check option;View created.[TEST@ora10gr1#2009-11-20/08:17:53] SQL>grant all on test_test01 to test01;Grant succeeded.[TEST@ora10gr1#2009-11-20/08:18:12] SQL>grant all on test_test02 to test02;Grant succeeded.
    test01用户数据插入方法:[TEST01@ora10gr1#2009-11-20/08:24:10] SQL>insert into test.test_test01 values(user,'test01数据');1 row created.
    test02用户数据插入方法:[TEST02@ora10gr1#2009-11-20/08:25:21] SQL>insert into test.test_test02 values(user,'test02数据');1 row created.
    只能想出这个方法满足你的要求了,如果你必须要求表名一样在数据库层面上想不出什么办法了,只有在应用程序中,人为的加 where 条件 限制了。
      

  4.   


    补充一点:
    创建视图的时候where user_name='test01'后面的【'test01'】名要大写,测试完后,忘记修改了,抱歉。
      

  5.   

    谢谢各位的帮助。
    一开始想法是如果user1增加了一条记录,那么是不是日志里有这样的记录,通过调用日志来确定只有user1来修改或者删除该记录。我觉得ORACLE应该能做到吧,只是我不知道怎么做而已。table1建2个视图,还不如两个表,对这两个表建一个视图。