簡體   English   中英

如何在Oracle中創建不是“由sys擁有”的表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM