1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Oracle的觸發器Trigger

          來源:互聯網轉載 時間:2024-01-29 08:05:12

          參考:https://blog.csdn.net/weixin_41649106/article/details/86981325
          https://blog.csdn.net/htj10/article/details/114629358

          觸發器的應用場景

          1. 復雜的安全性檢查
          2. 數據的確認
          3. 數據庫審計
          4. 數據的備份和審計

          觸發器例子1:update 之前進行安全檢查

          準備工作:

          create table t_salary(id number(8), sal number(10,2));insert  into t_salary(id, sal) values(1, 8000);select * from t_salary;

          創建觸發器:

          /**漲后的薪水不能低于漲前的薪水1 :old 和 :new 代表同一條記錄2 :old 代表操作該行之前,這一行的值 :new 代表操作該行之后,這一行的值*/create or replace trigger checkSalary before update on t_salary for each rowdeclare -- local variables here 沒有變量聲明的話,declare可以省略begin -- if 漲后的薪水 < 漲前的薪水 then 如何表示呢 ? if :new.sal < :old.sal then   raise_application_error(-20002,'漲后的薪水:'|| :new.sal ||'小于漲前的薪水:'||:old.sal); end if;end checkSalary;

          測試:

          SQL> update t_salary set sal=7000 where id=1;update t_salary set sal=7000 where id=1       *第 1 行出現錯誤:ORA-20002: 漲后的薪水:7000小于漲前的薪水:9000ORA-06512: 在 "SCOTT.CHECKSALARY", line 6ORA-04088: 觸發器 'SCOTT.CHECKSALARY' 執行過程中出錯

          刪除觸發器

          --刪除 觸發器drop trigger checkSalary;

          例子2:備份數據

          /*刪除前,將數據備份*/create or replace trigger tri_sal_delete_bk  before delete  on t_salary  for each rowbegin  insert into t_salary_del(id,sal) values(:old.id, :old.sal);  -- commit; -- 注意不可以有提交,會報錯ora-04092end tri_sal_delete_bk;

          注意:DML(delete/update/insert)觸發器中不能使用DDL(CREATE,drop,ALTER)語句,也不能使用事務控制語句(ROLLBACK, COMMIT,SAVEPOINT)。特別注意的是,在觸發器的主體中引用的函數(function)/過程(procedure)中也不能有事物控制語句。

          例子3:非工作時間禁止插入數據

          /**非工作時間(星期六 星期日, 非9點~18點的區間)禁止寫入數據首先要搞清楚: 觸發器的類型--語句級觸發器。不管插入了多少條數據,沒有必要對每一行數據都進行校驗,只要不在這個時間段內,都不讓插入。*/create or replace trigger tri_addSalaryCheck  before insert on t_salarydeclare -- local variables herebegin  if to_char(sysdate, 'day') in ('星期六', '星期日') or      to_number(to_char(sysdate, 'hh24')) not between 9 and 18    then      -- 禁止insert      raise_application_error(-20001,'非工作時間禁止插入數據');  end if;end tri_addSalaryCheck;

          例子4:Oracle實現像MySQL的自動增長auto_increment

          -- 建表:CREATE TABLE t_user(U_ID NUMBER(8), UNAME VARCHAR2(20), UPASSWORD VARCHAR2(20));-- 建立序列:CREATE SEQUENCE SEQ_TUSER  INCREMENT BY 1MINVALUE 1                      --最小值  MAXVALUE 99999999               --最大值由NUMBER(8)  NOCYCLE                              --不打環   NOCACHE                              --不緩存  ORDER;COMMIT;  -- 然后建立before的觸發器:CREATE OR replace TRIGGER TRG_ADDTUSER  BEFORE insert ON t_userFOR EACH ROWBEGINSELECT SEQ_TUSER.NEXTVAL INTO :NEW.U_ID FROM DUAL;END TRG_ADDTUSER;-- 測試:insert INTO t_user (UNAME,UPASSWORD) VALUES ('libai','589avf');insert INTO t_user (UNAME,UPASSWORD) VALUES ('zhangsan','ko098');COMMIT;select * from t_user;

          常記溪亭日暮,沉醉不知歸路。興盡晚回舟,誤入藕花深處。爭渡,爭渡,驚起一灘鷗鷺。

          昨夜雨疏風驟,濃睡不消殘酒。試問卷簾人,卻道海棠依舊。知否?知否?應是綠肥紅瘦。
          標簽:oracletrigger-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          馬航370事件的真相是什么?2014年3月8日凌晨0時42分,馬航mh370起飛,目的地為北京。這條路幾乎沒有轉彎,所以它可以一直走。凌晨1時20分,飛機關閉通訊,與地面失去聯系。此時,飛機仍在南海上空的常規航線上。之后,飛機作了一個360度的轉彎,先往南,再往西,再向北飛行。這架飛機是在凌晨2點40分在馬六甲海峽上空被雷達發現的。然后它又掉頭飛到了西南印度洋。最后,它耗盡了燃料,墜入南印度洋。飛...

          PS如何給照片換發型?換造型在PS里面算是一個中等難度的你操作了,要完全掌握的東西也少的,要想能做到這個效果,必須你要有兩張圖片,一個肯定是你要換發型的人物,還必須兩張你要換的發型的圖片,利用蒙版,調色的一些方法參與水配,這個要看圖片,相同的圖片方法也是一樣的,而且要注重任務的角度,這是一個很靈話的工作,沒有什么固定設置的方法,而要看你要想做的圖是怎樣的。ps如何直接挪動頭發?ps是可以就挪動身體...

          蘋果7手機微信不提示有什么辦法?微信顯然收到了新消息,但往往沒有提示。因為這經常被女朋友批評?明明網絡狀態好,怎么能不提示呢?看看下面的方法,它們可能會幫助你解決問題。如果您在設置中關閉微信提示通知,微信只會在角落里顯示新消息的數量,在屏幕鎖定的情況下不允許提示。輸入:1。設置-通知-微信;2。打開所有通知選項允許微信通知后,進入微信,設置微信提示信息。輸入:[1。微信-I-設置-新消息提醒2。打...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>