2017-04-18 49 views
0

我是SQL和數據庫領域的新手,我知道基本的東西。我有這個問題:防止創建表的用戶刪除SQL Plus中的記錄


在數據庫中創建三個用戶,例如userA,userB和userC和 授予基本權限來創建表並執行代碼。通過以userA連接到數據庫來創建任何表(T1) 。作爲一個「系統」的用戶提供以下權限,用戶A 和用戶B:

用戶A應該能夠插入和對錶更新記錄 T1
用戶B可以訪問只讀目的表T1的記錄。

userA和userB都不能從表T1中刪除記錄 。


我solusiton:

Create user userA 
identified by userA; 

__

Create user userB 
identified by userB; 

__

​​

__

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; 

__

我解決了前兩個問題,但是,我擔心的是第三個問題,因爲我沒有找到任何工作回答,但是我在搜索後得到了一條線索,我必須使用一些名爲觸發器的東西,我嘗試了一些,但沒有運氣。在嘗試了幾個授權命令並且沒有運氣的情況下撤銷命令後,兩個用戶總是刪除記錄。

請幫我在使用觸發器 謝謝

+0

如果你想防止刪除記錄你爲什麼要使用觸發器? –

+0

你正在使用什麼數據庫?請正確標記!順便說一下,這對我來說似乎是功課 – Squirrel

+1

不要在每個太陽下的數據庫中標記這個標記,而應關注您實際使用的數據庫。 – tadman

回答

0
+0

這不會阻止行被刪除,我試過了。行不斷被刪除。這就是爲什麼我想使用觸發器。 – Khaledtaj8

+0

哪位用戶能夠刪除行? – maSTAShuFu

+0

User1 ..創建表的同一個用戶。 – Khaledtaj8

0

請勿使用觸發器。觸發器不是爲了防止刪除。

您不應該因爲您從未授予它們而撤銷刪除操作。他們應該天生就不能刪除記錄。這使我認爲你正在創建T1作爲用戶本身。如果是這種情況,則不能撤銷表格所有者的刪除。

相關問題