防止创建表的用户删除SQL Plus中的记录

时间:2017-04-18 23:35:01

标签: sql oracle

我是SQL和数据库世界的新手,我知道基本的东西。我有这个问题:

在数据库中创建三个用户,例如userA,userB和userC和 授予创建表和执行代码的基本权限。创建 任何表(T1),通过userA连接到数据库。作为“系统”用户,向userA提供以下权限 和userB:

UserA应该能够在表格上插入和更新记录 T1
UserB可以访问表T1记录以供只读使用。

userA和userB都不能删除记录 从表T1。

我的解决方案:

Create user userA
identified by userA;

__

Create user userB
identified by userB;

__

Create user userC
identified by userC;

__

Create Table T1(
tid number(3) primary key,
tname varchar2(20),
);

insert into T1 Values (8, Mike);

__ 我对前两个问题的解决方案:

Grant Insert ON T1 FROM userA;
Grant Update ON T1 FROM userA;

Grant Select on T1 from UserB;

__

我解决了前两个问题,然而,我关心的是第三个问题,因为我没有找到任何可行的答案,但我在搜索后得到一个线索,我必须使用一个名为Trigger的东西,我试过了一些但没有运气。在尝试多个grant命令并撤销命令后,两个用户总是删除记录。

请帮我使用触发器 谢谢

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

不要使用触发器。触发器不是为了防止删除。

您不应该因为从未授予删除而撤消删除。他们天生就不能删除记录。这让我觉得你正在创建T1作为用户本身。如果是这种情况,则无法撤消表格所有者的删除。