我從sql plus用戶(而不是sys)登錄到第一張圖片,並從oracle sql developer運行觸發器,但是它使第二張圖片中出現錯誤。無法在SYS擁有的對象上創建觸發器
ORA-04089: cannot create triggers on objects owned by SYS
我使用Oracle 12c和不知道我的觸發代碼是否是完全正確的。我的目的是當有人嘗試添加相同的ogrenci_no(student_number)時顯示警告。我能爲此做些什麼?
我從sql plus用戶(而不是sys)登錄到第一張圖片,並從oracle sql developer運行觸發器,但是它使第二張圖片中出現錯誤。無法在SYS擁有的對象上創建觸發器
ORA-04089: cannot create triggers on objects owned by SYS
我使用Oracle 12c和不知道我的觸發代碼是否是完全正確的。我的目的是當有人嘗試添加相同的ogrenci_no(student_number)時顯示警告。我能爲此做些什麼?
如果您授予該用戶的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) ;
,這將防止重複被允許。