国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

初學觸發器

2024-07-21 02:07:29
字體:
來源:轉載
供稿:網友
注冊會員,創建你的web開發資料庫,
這里只打算講解四部分了,也就最簡單、最常用的四部分。

  1、觸發器。

     定義: 何為觸發器?在sql server里面也就是對某一個表的一定的操作,觸發某種條件,從而執行的一段程序。觸發器是一個特殊的存儲過程。
     常見的觸發器有三種:分別應用于insert , update , delete 事件。(sql server 2000定義了新的觸發器,這里不提)

     我為什么要使用觸發器?比如,這么兩個表:

     create table student(             --學生表
       studentid int primary key,      --學號
       ....
      )

     create table borrowrecord(              --學生借書記錄表
       borrowrecord  int identity(1,1),      --流水號  
       studentid     int ,                   --學號
       borrowdate    datetime,               --借出時間
       returndate    datetime,               --歸還時間
       ...
     )

    用到的功能有:
       1.如果我更改了學生的學號,我希望他的借書記錄仍然與這個學生相關(也就是同時更改借書記錄表的學號);
       2.如果該學生已經畢業,我希望刪除他的學號的同時,也刪除它的借書記錄。
    等等。

    這時候可以用到觸發器。對于1,創建一個update觸發器:

    create trigger trustudent
      on student
      for update
    as
      if update(studentid)
      begin

        update borrowrecord 
          set studentid=i.studentid
          from borrowrecord br , deleted  d ,inserted i 
          where br.studentid=d.studentid

      end       
                
    理解觸發器里面的兩個臨時的表:deleted , inserted 。注意deleted 與inserted分別表示觸發事件的表“舊的一條記錄”和“新的一條記錄”。
    一個update 的過程可以看作為:生成新的記錄到inserted表,復制舊的記錄到deleted表,然后刪除student記錄并寫入新紀錄。

    對于2,創建一個delete觸發器
    create trigger trdstudent
      on student
      for delete
    as
      delete borrowrecord 
        from borrowrecord br , delted d
        where br.studentid=d.studentid

    從這兩個例子我們可以看到了觸發器的關鍵:a.2個臨時的表;b.觸發機制。
    這里我們只講解最簡單的觸發器。復雜的容后說明。
    事實上,我不鼓勵使用觸發器。觸發器的初始設計思想,已經被“級聯”所替代
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 视频| 乌拉特后旗| 临汾市| 酒泉市| 闽清县| 沙田区| 咸阳市| 庆云县| 图木舒克市| 西林县| 海兴县| 武隆县| 泾源县| 将乐县| 庄浪县| 方山县| 元氏县| 板桥市| 同德县| 高台县| 全州县| 长垣县| 金华市| 兴海县| 砀山县| 柯坪县| 栾城县| 包头市| 阿拉善右旗| 吉安市| 峨眉山市| 遂平县| 英吉沙县| 志丹县| 裕民县| 菏泽市| 新民市| 永清县| 嵩明县| 株洲市| 锡林郭勒盟|