小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

sql 觸發(fā)器

 小朋 2006-10-26
1、觸發(fā)器。

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

  我為什么要使用觸發(fā)器?
    比如,這么兩個表:
  Create Table Student(         --創(chuàng)建學生表
    StudentID int primary key,     --學號,定義主鍵約束
    ....
    )

  Create Table BorrowRecord(         --創(chuàng)建借書記錄表
    BorrowRecord int identity(1,1),     --自動增長流水號 
    StudentID   int ,             --學號
    BorrowDate   datetime,           --借出時間
    ReturnDAte   Datetime,           --歸還時間
    ...
  )

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

  這時候可以用到觸發(fā)器。對于1,創(chuàng)建一個Update觸發(fā)器:

  Create Trigger truStudent
    On Student
    for Update   --觸發(fā)器類型--Update
  -------------------------------------------------------
  --Name:truStudent
  --func:更新BorrowRecord 的StudentID,與Student同步。
  --Use :None
  --User:System
  --Author: wp_love
  --Date : 2003-4-16
  --Memo : 臨時寫寫的,給大家作個Sample。沒有調試阿。
  -------------------------------------------------------
  As
    if Update(StudentID)
    begin

    Update BorrowRecord 
      Set br.StudentID=i.StudentID
      From BorrowRecord br , Deleted d ,Inserted i 
      Where br.StudentID=d.StudentID

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

  對于2,創(chuàng)建一個Delete觸發(fā)器
  Create trigger trdStudent
      On Student
      for Delete
  -------------------------------------------------------
  --Name:trdStudent
  --func:同時刪除 BorrowRecord 的數(shù)據(jù)
  --Use :None
  --User:System
  --Author: 
  --Date : 2003-4-16
  --Memo : 臨時寫寫的,給大家作個Sample。沒有調試阿。
  -------------------------------------------------------
  As
    Delete BorrowRecord 
    From BorrowRecord br , Delted d
    Where br.StudentID=d.StudentID

  從這兩個例子我們可以看到了觸發(fā)器的關鍵:A.2個臨時的表;B.觸發(fā)機制。
  這里我們只講解最簡單的觸發(fā)器。復雜的容后說明。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多