/ SYSが所有するトリガーを作成する方法はありますか。それに対して[重複]解決策は何ですか - oracle、plsql、oracle11g、トリガー

SYSによって所有されているトリガーを作成する方法はありますか?この[重複] - oracle、plsql、oracle11g、triggersの解決策は何でしょうか

作成する問題があります 引き金 私は私のCMDベローズの写真を添付し​​ています

ここに画像の説明を入力

これは私のコードです

CREATE OR REPLACE TRIGGER display_salary_changes
BEFORE DELETE OR INSERT OR UPDATE ON customers
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
sal_diff number;
BEGIN
sal_diff := :NEW.salary - :OLD.salary;
dbms_output.put_line("Old salary " || :OLD.salary);
dbms_output.put_line("New salary " || :NEW.salary);
dbms_output.put_line("Salary difference " || :sal_diff);
END;
/

エラー

ORA-04089:SYSが所有するオブジェクトにトリガーを作成できません

これに対して可能な解決策は何でしょうか、または今何をしますか

回答:

回答№1は1

あなたの顧客テーブルはSYSユーザーによって作成されたと思います。

"MY_USER"のようにsysを使用してユーザーを作成し、接続してからMY_USERを使用してcustomerテーブルを作成します。そしてトリガーを作成してみてください。ドロップ sys.customer 表。

このアカウントはすべての管理を実行できます関数。全拠点 データベースデータディクショナリの(基礎となる)テーブルとビューは SYSスキーマに格納されています。これらの実表とビューは、 Oracle Databaseの操作の整合性を維持するために データディクショナリ、SYSスキーマ内のテーブルは、 データベース。それらはいかなるユーザーまたはデータベースによっても決して変更されるべきではありません。 管理者SYSスキーマに表を作成しないでください。

によると: https://docs.oracle.com/database/121/ADMQS/GUID-CF1CD853-AF15-41EC-BC80-61918C73FDB5.htm#ADMQS12003