如何在Oracle中创建不属于“由sys拥有”的表?

我试图创建一个触发器:

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模式并为用户提供在桌面上创建触发器的权限。

链接地址: http://www.djcxy.com/p/73675.html

上一篇: How do I create tables not "owned by sys" in Oracle?

下一篇: Can I declare a variable in html?