<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    序列、觸發器實例

    Posted on 2009-02-16 19:32 啥都寫點 閱讀(572) 評論(0)  編輯  收藏 所屬分類: DB

    想在項目中插入一個序列,對序列的概念以及用法有點模糊,通過查閱資料現在已經對在oracle中插入序列有了一定的了解:

    創建一個序列:

    create sequence SEQ_FileInfo_GW

    minvalue 100000000

    maxvalue 299999999

    start with 100000000

    increment by 1;

    當向表中插入數據時,SQL語句寫法如下:

    INSERT   INTO   my_table(id,...)   values(seq.NEXTVAL,...)


    觸發器應用場景:

            1、強化約束

            2、跟蹤變化

            3、級聯運行

            4、存儲過程的調用

    觸發器分類:

            1、DML觸發器

            2、INSTEAD OF觸發器

            3、系統觸發器


    --demo

    --創建一個語句級觸發器,不允許用戶在“星期日”使用emp表。

    CREATE OR REPLACE TRIGGER not_sunday

    BEFORE INSERT OR UPDATE OR DELETE ON emp

    BEGIN

     IF rtrim(to_char(SYSDATE,'day'))='SUNDAY' THEN

        raise_application_error(-20333,'Sorry!Not on Sundays');

     END IF;

    END;

    --demo

    --創建一個行級觸發器,將從emp表中刪除的記錄輸入到ret_emp表中

    --step1

    CREATE TABLE ret_emp AS SELECT * FROM emp;

    --step1

    CREATE OR REPLACE TRIGGER emp_retire

    BEFORE DELETE ON emp

    FOR EACH ROW

    BEGIN

     INSERT INTO ret_emp VALUES (:OLD.empno,:OLD.ename,:OLD.job,:OLD.mgr,:OLD.hiredate,:OLD.sal,:OLD.comm,:OLD.deptno);

    END;

    --demo

    --創建一個行級觸發器,停止用戶刪除'president'的記錄。

    CREATE OR REPLACE TRIGGER not_president

    BEFORE DELETE ON emp

    FOR EACH ROW

    WHEN (old.job='PRESIDENT')

    BEGIN

     raise_application_error(-20444,'CANNOT DELETE PRESIDENTS RECORD');

    END;

    --demo

    --創建instead of觸發器,通過視圖添加數據。

    --step1

    create or replace view v_deptemp

    as

     select dept.deptno,dept.dname,

             emp.empno,emp.ename

     from dept,emp

     where dept.deptno = emp.deptno;

     

    --step2 

    insert into v_deptemp values(90,'dept',9001,'emp');

    --step3 

    create or replace trigger tr_i_deptemp

    instead of insert on v_deptemp

    for each row

    declare

     v_num number;

    begin

     

     select count(*) into v_num

     from dept where deptno = :new.deptno;

     if v_num = 0 then

       insert into dept(deptno,dname)

       values(:new.deptno,:new.dname);

     end if;

       

     select count(*) into v_num

     from emp where empno = :new.empno;

     if v_num = 0 then

       insert into emp(empno,ename)

       values(:new.empno,:new.ename);

     end if;

       

    end; 

    --step4 

    insert into v_deptemp values(90,'dept',9001,'emp');

    --demo

    --創建DDL觸發器

    --step1

    create table tmp

    ( tid number,

     tdesc varchar2(20)

    );

    --step2

    create or replace trigger ddlschema

    after create or drop or alter on schema

    begin

     insert into tmp values(1,'create');

    end;

    --demo

    --創建DDL觸發器

    --step1

    grant administer database trigger to scott;

    --step2

    create or replace trigger loguser

    after logon on schema

    begin

     insert into tmp values(1,'user log');

    end;

    --step3

    create or replace trigger logalluser

    after logon on database

    begin

     insert into scott.tmp values(2,'user all log');

    end;



                                                                                                           --    學海無涯
            


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲高清国产AV拍精品青青草原| 久久亚洲精品无码观看不卡| v片免费在线观看| 亚洲国产成人久久综合一区| 亚洲日韩中文字幕在线播放| 天天操夜夜操免费视频| 91老湿机福利免费体验| 丝袜足液精子免费视频| 免费夜色污私人影院网站| 在线观看亚洲AV每日更新无码 | 在线观看亚洲电影| 亚洲人成日本在线观看| 亚洲AV日韩AV鸥美在线观看| 亚洲欧洲日产国码高潮αv| 日韩成人免费视频播放| 特级做A爰片毛片免费69| 亚洲黄色免费网址| 久久久久久国产精品免费免费男同 | 免费永久看黄在线观看app| 免费A级毛片无码无遮挡内射| 日本黄色动图免费在线观看| 精品一区二区三区免费视频| 乱爱性全过程免费视频| 色妞www精品视频免费看| 亚洲日韩AV无码一区二区三区人| 亚洲婷婷综合色高清在线| 91久久亚洲国产成人精品性色| 亚洲国产另类久久久精品小说| 免费大黄网站在线观| 国产男女猛烈无遮挡免费视频网站| 无码国产精品一区二区免费虚拟VR| 97在线视频免费公开观看| 免费av片在线观看网站| 特级做A爰片毛片免费看无码| 国产vA免费精品高清在线观看| 日亚毛片免费乱码不卡一区| 免费精品国自产拍在线播放 | 黑人粗长大战亚洲女2021国产精品成人免费视频 | 久久久精品国产亚洲成人满18免费网站 | 国产成人AV免费观看| 日本在线免费播放|