7

我试图创建一个触发器:

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"
4

2 回答 2

7

鉴于错误,我假设您正在登录数据库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>>

完成后,您可以创建表和触发器。

于 2013-08-19T00:58:04.240 回答
-2

我认为这是特权问题。您正在尝试在 SYS 模式中的表上创建触发器,但您没有这样做的权限。

请转到 SYS 模式并为用户提供在表上创建触发器的权限。

于 2013-08-19T05:13:07.487 回答