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

时间:2013-08-18 22:13:47

标签: 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"

2 个答案:

答案 0 :(得分:7)

鉴于错误,我假设您以[{1}}身份登录数据库以创建表并编写代码。您不希望使用SYS架构 - 您永远不应在SYS架构中创建对象。您需要以其他用户身份登录数据库。通常,如果要构建一个全新的应用程序,则需要创建一个新用户来拥有新应用程序的所有对象。

例如,如果您正在构建Facebook克隆,并且希望将SYS表空间用于数据

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

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

答案 1 :(得分:-2)

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

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