2017-04-23 30 views
0

SQL Plusのユーザー(sysではない)と最初の画像でログインし、oracle sql開発者からトリガーを実行しますが、SYSで所有されているオブジェクトのトリガーを作成できません

enter image description here

ORA-04089: cannot create triggers on objects owned by SYS

enter image description here

私は、トリガ・コードが正確に正しいかどうかを確認してくださいオラクル部12cを使用していませんよ。私の目的は、誰かが同じogrenci_no(student_number)を追加しようとしたときに警告を表示することです。これで何ができますか?

答えて

1

SYSDBA権限をそのユーザーに付与した場合は、間接的にSYSアカウントを使用しています。ここでは、テーブルを格納するための単純なユーザーを作成する方法についての小さなビデオを示します。

https://www.youtube.com/watch?v=WDJacg0NuLo

今、あなたのトリガーへ。トリガーでロールバック(またはコミット)を発行することは決してありません。これは、潜在的に大規模なトランザクションの一部であるためです。やりたいことなど

if :new.col = :old.col then 
    raise_application_error(-20000,'You did not change the value'); 
end if; 

、トリガーを起動した文を放棄しますエラーが発生している。しかし、あなたは、INSERT文をトラップしているので、もちろん、これはそうそこに、あなたのケースで仕事に行くされていませんなし '古い'値です。私はあなたがユニーク制約をしたい、そのためのトリガここにあなたの目的は、テーブル内の任意の重複を持っていません...ので、あなたが必要とする(またはたく)していないと思いますが、例えば

であることから、重複を防ぐことができます
alter table MY_TABLE add constraint MY_TABLE_UQ unique (ogrenci_no) ; 

許可されます。

関連する問題