我试图创建一个触发器:
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"
答案 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架构并为用户提供在表上创建触发器的权限。