-
觸發(fā)器 Create trigger saynewenp after insert on emp declare begin dbms_output.put_line('成功插入新員工'); end;查看全部
-
例子: 1.下班時間不能插入數(shù)據(jù)庫; 2.漲工資越漲越高,低了就不能修改; 3.把操作的時間、帳戶等信息記錄下來; 4.不同的數(shù)據(jù)表間進(jìn)行同步備份查看全部
-
插入前拋出錯誤,能不繼續(xù)執(zhí)行raise_application_error查看全部
-
應(yīng)用場景: 1 復(fù)雜的安全性檢查 2 數(shù)據(jù)確認(rèn) 3 實(shí)現(xiàn)審計(jì)的功能 4 完成數(shù)據(jù)的備份和同步查看全部
-
觸發(fā)器(trigger)查看全部
-
tigger語法格式查看全部
-
基本語法查看全部
-
觸發(fā)器應(yīng)用場景四: 數(shù)據(jù)的備份和同步 例子:當(dāng)給員工漲完工資后,自動備份新的工資資料到備份表中 create or replace trigger trigger_sync_salary after update on emp for each row begin update emp_back set sal=:new.sal where empno=:new.empbo; end;查看全部
-
觸發(fā)器應(yīng)用場景三: 數(shù)據(jù)的審計(jì)---》基于值得審計(jì)功能 例子:給員工漲工資,當(dāng)漲后的薪水超過6000塊時候,審計(jì)該員工的信息 創(chuàng)建表,用于保存審計(jì)信息 create table audit_info( information varchar2(200) ); create or replace trigger do_audit_emp_salary after update on emp for each row begin if :new.sal>6000 then insert into audit_info values(:new.empno||' '||:new.ename||' '||:new.sal); end if; end;查看全部
-
行級觸發(fā)器針對的是記錄,語句級觸發(fā)器針對的是表。 案例一不允許在非工作時間插入新員工,不論是插入一條記錄還是多條記錄,觸發(fā)器中的子程序都只需要執(zhí)行一次,如果不符合條件,則不允許對整個表進(jìn)行操作,即針對整個表只需要執(zhí)行一次子程序,所以這里用的是語句級觸發(fā)器; 案例二漲后的工資不能低于漲前的工資,在對每一個員工漲工資時都需要執(zhí)行觸發(fā)器中的子程序,來判斷是否漲后的工資低于漲前的工資,即針對每條記錄都要執(zhí)行子程序,所以這里用的是行級觸發(fā)器。 在行級觸發(fā)器中使用:old和:new偽記錄變量,識別值的狀態(tài)。 :old表示操作這行記錄前這行記錄的值; :new表示操作這行記錄之后這行記錄的值。 比如 :new.sal可以表示操作這行記錄后該行中sal的值。查看全部
-
觸發(fā)器案例二: 數(shù)據(jù)的確認(rèn) 漲工資不能越漲越少 :old 表示操作該行之前這一行的值 :new 表示操作該行之后這一行的值 create or replace trigger check_salary before update on emp for each row begin if :new.sal<:odl.sal then raise_application_error(-20002,'漲后薪水不能少于漲前薪水。 漲后薪水為:'||:new.sal ||'漲前的薪水:'||:old.sal); end if; end;查看全部
-
觸發(fā)器案例一 : 復(fù)雜的安全性檢查 例如禁止在非工作時間插入數(shù)據(jù) /** 1.周末: to_char(sysdate,'day') in ('星期六',‘星期日’) 2.上班前,下班后: to_number(to_char(sysdate,'hh24')) not between 9 and 18 / create or replace trigger securityemp before insert on emp begin if to_char(sysdate,'day') in ('星期六', '星期日') or to_number(to_char(sysdate,'hh24')) not between 9 and 18 then raise_application_error(-20001,'禁止在非工作時間插入新員工'); end if; end;查看全部
-
觸發(fā)器應(yīng)用案例一:禁止非工作期間insert新員工 raise_application_error用于在plsql使用程序中自定義不正確消息。 該異常只好在數(shù)據(jù)庫端的子程序(流程、函數(shù)、包、觸發(fā)器)中運(yùn)用,而無法在匿名塊和客戶端的子程序中運(yùn)用。 語法為raise_application_error(error_number,message[,[truefalse]]); 其中 error_number用于定義不正確號,該不正確號必須在-20000到-20999之間的負(fù)整數(shù); message用于指定不正確消息,并且該消息的長度無法超過2048字節(jié);查看全部
-
觸發(fā)器案例一:復(fù)雜的安全性檢查 禁止在非工作時間插入數(shù)據(jù) select sysdate from dual; SYSDATE select to_char(sysdate,'day') from dual;查看全部
-
行級觸發(fā)器查看全部
舉報(bào)
0/150
提交
取消