[英]How do I create tables not “owned by sys” in Oracle?
我試圖創建一個觸發器:
create trigger afterupdate
after insert on friends
for each row
begin
dbms_output.put_line('hello world');
end afterupdate;
但是出現以下錯誤:
"cannot create triggers on objects owned by SYS"
鑒於錯誤,我假設您以SYS
身份登錄數據庫以創建表並編寫代碼。 您不希望使用SYS
模式 - 您永遠不應該在SYS
模式中創建對象。 您需要以其他用戶身份登錄數據庫。 通常,如果要構建一個全新的應用程序,則可以創建一個新用戶來擁有新應用程序的所有對象。
例如,如果您正在構建Facebook克隆,並且希望將USERS
表空間用於您的數據
CREATE USER facebook_appid
IDENTIFIED BY <<password>>
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
GRANT CREATE SESSION,
CREATE TABLE,
CREATE TRIGGER
TO facebook_appid;
然后,您將使用您指定的密碼以facebook_appid
身份連接到數據庫。
sqlplus facebook_appid/<<password>>@<<TNS alias>>
完成后,您可以創建表和觸發器。
我認為這是特權問題。 您正在嘗試在SYS架構中的表上創建觸發器,並且您沒有這樣做的權限。
請轉到SYS架構並為用戶提供在表上創建觸發器的權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.