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

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

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

    觸發(fā)器設(shè)計技巧與實例

    ?????在數(shù)據(jù)庫設(shè)計中,有兩種方法可設(shè)定自動化的資料處理規(guī)則,一種是條件約束,
    一種是觸發(fā)器,一般而言,條件約束比觸發(fā)器較容易設(shè)定及維護,且執(zhí)行效率較
    好,但條件約束只能對資料進行簡單的欄位檢核,當(dāng)涉及到多表操作等復(fù)雜操
    作時,就要用到觸發(fā)器了.
    ????? 一個數(shù)據(jù)庫系統(tǒng)中有兩個虛擬表用于存儲在表中記錄改動的信息,分別
    ?是:
    ???????????????? 虛擬表Inserted??????????????????? 虛擬表Deleted

    在表記錄新增時?? 存放新增的記錄??????????????????????? 不存儲記錄
    ??????? 修改時?? 存放用來更新的新記錄????????????????? 存放更新前的記錄
    ??????? 刪除時?? 不存儲記錄??????????????????????????? 存放被刪除的記錄
    ?
    ????? 觸發(fā)器的種類及觸發(fā)時機
    ?After觸發(fā)器:觸發(fā)時機在資料已變動完成后,它將對變動資料進行必要的
    ????????????? 善后與處理,若發(fā)現(xiàn)有錯誤,則用事務(wù)回滾(Rollback Transaction)
    ????????????? 將此次操作所更動的資料全部回復(fù)。
    ?Istead of 觸發(fā)器:觸發(fā)時機在資料變動前發(fā)生,且資料如何變動取決于觸發(fā)器

    現(xiàn)在介紹一下創(chuàng)建觸發(fā)器的編寫格式:

    After類型:
    ??? Create Trigger? 觸發(fā)器名稱
    ??? on 表名
    ??? after 操作(insert,update)
    ??? as?
    ????? Sql語句

    Instead類型
    ??? Create Trigger 觸發(fā)器名稱
    ??? on 表名
    ??? Instead of 操作(update,delete)
    ??? as
    ????? Sql語句

    實例1:
    ???? 在訂單(表orders)中的訂購數(shù)量(列名為num)有變動時,觸發(fā)器會先到客戶(表Customer)中
    取得該用戶的信用等級(列名為Level),然后再到信用額度(Creit)中取出該等級
    許可的訂購數(shù)量上下限,最后比較訂單中的訂購數(shù)量是否符合限制。

    代碼:?????????
    ?????????? Create? Trigger num_check
    ?????????? on orders
    ?????????? after insert,update
    ?????????? as
    ?????????? if update(num)
    ???????????? begin
    ?????????????? if exists(select a.* from orders a join customer b on a.customerid=b.customerid
    ????????????????????????????????????????????????? join creit c on b.level=c.level
    ????????????????????????????????????????????????? where a.num between c.up and c.down)
    ?????????????? begin
    ????????????????? rollback transaction
    ????????????????? exec master..xp_sendmail 'administrator','客戶的訂購數(shù)量不符合限制'
    ?????????????? end??
    ???????????? end?
    實例2:
    ????? 有工資管理系統(tǒng)中,當(dāng)公司對某員工甲的月薪進行調(diào)整時,通常會先在表員工中修改薪資列,然后在
    ????? 表員工記錄中修改薪資調(diào)整時間與薪資
    ???????????
    ????????? Create trigger compensation
    ????????? on 員工
    ????????? after update
    ????????? as
    ??????????? if @@rowcount=0 return
    ??????????? if update(薪資)
    ?????????????? begin
    ???????????????? insert 員工記錄
    ???????????????? select 員工遍號,薪資,getdate()
    ???????????????? from inserted
    ?????????????? end



    posted on 2006-08-07 12:09 nbt 閱讀(576) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫技術(shù)

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    Java技術(shù)網(wǎng)站

    友情鏈接

    國內(nèi)一些開源網(wǎng)站

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久乐国产综合亚洲精品| 亚洲成在人天堂在线| 国产大片免费观看中文字幕| 久久精品国产精品亚洲艾草网美妙 | 亚洲精品乱码久久久久久久久久久久| 国产一区二区三区免费在线观看| 亚洲AV无码AV男人的天堂| 免费看无码特级毛片| 午夜高清免费在线观看| 国产亚洲无线码一区二区| 男女拍拍拍免费视频网站| 在线jyzzjyzz免费视频| 亚洲精品V天堂中文字幕| 欧洲一级毛片免费| 亚洲乱亚洲乱妇无码麻豆| 国产成人综合亚洲一区| 曰批全过程免费视频在线观看| 亚洲精品亚洲人成在线观看| 免费人成网站在线观看不卡| 亚洲国产精品一区二区第四页| 亚洲xxxx18| 色老头永久免费网站| 亚洲熟妇无码八V在线播放| 国产精品成人免费福利| 亚洲AV午夜成人片| 97在线免费视频| 亚洲国产综合精品一区在线播放| 亚洲粉嫩美白在线| 国产一级淫片视频免费看| 波霸在线精品视频免费观看| 亚洲成人影院在线观看| 精品亚洲永久免费精品| 亚洲免费闲人蜜桃| 国产免费久久精品99re丫y| 国产成人亚洲精品播放器下载 | 亚洲精品国产福利在线观看| 99热这里有免费国产精品| 亚洲国产三级在线观看| 国产成人免费网站| 国产精品免费在线播放| 亚洲日韩av无码|