我是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命令并撤销命令后,两个用户总是删除记录。
请帮我使用触发器 谢谢
答案 0 :(得分:0)
https://docs.oracle.com/cd/E11882_01/network.112/e36292/authorization.htm#DBSEG99960
https://www.techonthenet.com/oracle/grant_revoke.php
REVOKE DELETE ON T1 FROM user1, user2;
另一种方法是在撤销删除
之前将表的所有权更改为后期过程http://searchoracle.techtarget.com/tip/Change-table-ownership-and-properties-in-less-than-a-minute
答案 1 :(得分:0)
不要使用触发器。触发器不是为了防止删除。
您不应该因为从未授予删除而撤消删除。他们天生就不能删除记录。这让我觉得你正在创建T1作为用户本身。如果是这种情况,则无法撤消表格所有者的删除。