• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            觸發器實例(觸發器應用實例)

            更新時間:2023-03-01 16:02:29 閱讀: 評論:0

            一、觸發器簡介

            觸發器的定義就是說某個條件成立的時候,觸發器里面所定義的語句就會被自動的執行。

            因此觸發器不需要人為的去調用,也不能調用。

            然后,觸發器的觸發條件其實在你定義的時候就已經設定好了。

            觸發器可以分為語句級觸發器和行級觸發器,簡單的說就是語句級的觸發器可以在某些語句執行前或執行后被觸發。而行級觸發器則是在定義的了觸發的表中的行數據改變時就會被觸發一次。

            具體舉例:

            1、 在一個表中定義的語句級的觸發器,當這個表被刪除時,程序就會自動執行觸發器里面定義的操作過程。這個就是刪除表的操作就是觸發器執行的條件了。

            2、 在一個表中定義了行級的觸發器,那當這個表中一行數據發生變化的時候,比如刪除了一行記錄,那觸發器也會被自動執行了。

            二、觸發器語法

            觸發器的語法:

            create [or replace] tigger 觸發器名 觸發時間 觸發事件on 表名[for each row]begin pl/sql語句end

            其中:

            觸發器名:觸發器對象的名稱。由于觸發器是數據庫自動執行的,因此該名稱只是一個名稱,沒有實質的用途。

            觸發時間:指明觸發器何時執行,該值可取:

            before:表示在數據庫動作之前觸發器執行;

            after:表示在數據庫動作之后觸發器執行。

            觸發事件:指明哪些數據庫動作會觸發此觸發器:

            inrt:數據庫插入會觸發此觸發器;

            update:數據庫修改會觸發此觸發器;

            delete:數據庫刪除會觸發此觸發器。

            表 名:數據庫觸發器所在的表。

            for each row:對表的每一行觸發器執行一次。如果沒有這一選項,則只對整個表執行一次。

            功能

            觸發器能實現如下功能:

            1、 允許/限制對表的修改

            2、 自動生成派生列,比如自增字段

            3、 強制數據一致性

            4、 提供審計和日志記錄

            5、 防止無效的事務處理

            6、 啟用復雜的業務邏輯

            實例

            1)、下面的觸發器在更新表tb_emp之前觸發,目的是不允許在周末修改表:

            create or replace trigger auth_cure before inrt or update or DELETEon tb_empbegin IF(to_char(sysdate,'DY')='星期日') THEN RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表tb_emp'); END IF;END;/

            2)、使用觸發器實現序號自增

            創建一個測試表:

            create table tab_ur( id number(11) primary key, urname varchar(50), password varchar(50));

            創建一個序列:

            create quence my_q increment by 1 start with 1 nomaxvalue nocycle cache 20;

            創建一個觸發器:

            CREATE OR REPLACE TRIGGER MY_TGR BEFORE INSERT ON TAB_USER FOR EACH ROW--對表的每一行觸發器執行一次DECLARE NEXT_ID NUMBER;BEGIN SELECT MY_SEQ.NEXTVAL INTO NEXT_ID FROM DUAL; :NEW.ID := NEXT_ID; --:NEW表示新插入的那條記錄END;

            向表插入數據:

            inrt into tab_ur(urname,password) values('admin','admin');inrt into tab_ur(urname,password) values('fgz','fgz');inrt into tab_ur(urname,password) values('test','test');COMMIT;

            查詢表結果:SELECT * FROM TAB_USER;

            3)、當用戶對test表執行DML語句時,將相關信息記錄到日志表

            --創建測試表CREATE TABLE test( t_id NUMBER(4), t_name VARCHAR2(20), t_age NUMBER(2), t_x CHAR);--創建記錄測試表CREATE TABLE test_log( l_ur VARCHAR2(15), l_type VARCHAR2(15), l_date VARCHAR2(30));

            創建觸發器:

            --創建觸發器CREATE OR REPLACE TRIGGER TEST_TRIGGER AFTER DELETE OR INSERT OR UPDATE ON TESTDECLARE V_TYPE TEST_LOG.L_TYPE%TYPE;BEGIN IF INSERTING THEN --INSERT觸發 V_TYPE := 'INSERT'; DBMS_OUTPUT.PUT_LINE('記錄已經成功插入,并已記錄到日志'); ELSIF UPDATING THEN --UPDATE觸發 V_TYPE := 'UPDATE'; DBMS_OUTPUT.PUT_LINE('記錄已經成功更新,并已記錄到日志'); ELSIF DELETING THEN --DELETE觸發 V_TYPE := 'DELETE'; DBMS_OUTPUT.PUT_LINE('記錄已經成功刪除,并已記錄到日志'); END IF; INSERT INTO TEST_LOG VALUES (USER, V_TYPE, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss')); --USER表示當前用戶名END;/

            --下面執行DML語句

            INSERT INTO test VALUES(101,'zhao',22,'M');UPDATE test SET t_age = 30 WHERE t_id = 101;DELETE test WHERE t_id = 101;

            --查看效果

            SELECT * FROM test;SELECT * FROM test_log;

            運行結果如下:

            篇幅有限,今天內容就分享到這了,后面會更多分享DBA和devops內容,感興趣的朋友可以關注下~

            本文發布于:2023-02-28 20:08:00,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167765774977009.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:觸發器實例(觸發器應用實例).doc

            本文 PDF 下載地址:觸發器實例(觸發器應用實例).pdf

            標簽:觸發器   實例   應用實例
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 亚洲区日韩精品中文字幕| av中文字幕国产精品| 爱性久久久久久久久| A级毛片免费完整视频| 国产极品美女网站在线观看| 亚洲第一香蕉视频啪啪爽| 69久久国产露脸精品国产| 亚洲国产精品成人av网| 女性裸体啪啪拍无遮挡的网站| 亚洲国产大片永久免费看| 国产成年无码久久久免费| 一面膜上边一面膜下边视频| 亚日韩精品一区二区三区| 精品国产亚洲午夜精品av| 免费AV片在线观看网址| 日韩欧美亚洲综合久久| 国产一区二区三区不卡在线看| 国精产品999国精产品视频| 人人超碰人人爱超碰国产| 丝袜美腿视频一区二区三区| 久热99热这里只有精品| 亚洲色大成网站WWW永久麻豆| 亚洲国产日韩伦中文字幕| 国内精品久久久久影院薰衣草| 强制高潮18xxxxhd日韩| 刺激第一页720lu久久| 国产三级黄色片在线观看| 国内精品久久久久影院网站| 在线精品视频一区二区三四| 天堂a无码a无线孕交| 免费国产综合色在线精品 | 人妻中文字幕精品系列| 成年在线观看免费人视频| 91嫩草尤物在线观看| 欧美日韩中文字幕二区三区| 永久免费在线观看蜜桃视频| 久草热大美女黄色片免费看| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 福利导航第一福利导航| 国产精品一区二区人人爽| 亚洲熟少妇一区二区三区|