国产探花免费观看_亚洲丰满少妇自慰呻吟_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.觸發機制。
    這里我們只講解最簡單的觸發器。復雜的容后說明。
    事實上,我不鼓勵使用觸發器。觸發器的初始設計思想,已經被“級聯”所替代
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舟曲县| 九江市| 新巴尔虎左旗| 盐边县| 崇仁县| 甘孜| 邹城市| 江城| 洛宁县| 确山县| 汝城县| 三亚市| 沾化县| 颍上县| 三台县| 永昌县| 辛集市| 哈巴河县| 襄垣县| 丁青县| 通州市| 辽宁省| 太康县| 嘉义市| 通辽市| 宁安市| 湖州市| 沂南县| 漳州市| 崇仁县| 崇明县| 镇江市| 公主岭市| 德安县| 屯门区| 三门县| 克什克腾旗| 思茅市| 会昌县| 卫辉市| 林甸县|