SQL關於觸發器及存儲過程的創建


使用T-SQL語句來創建觸發器   基本語句如下﹕                  

create trigger trigger_name           

on {table_name | view_name}           

{for | After | Instead of }            [ insert, update,delete ]           

as            sql_statement  

 

例如:

Create Trigger truStudent       

  On Student                         --在Student表中創建觸發器       

  for Update                          --為什么事件觸發     

  As                                      --事件觸發后所要做的事情       

    if Update(StudentID)                  

  begin

      Update BorrowRecord           

  Set StudentID=i.StudentID           

  From BorrowRecord br , Deleted   d ,Inserted i      --Deleted和Inserted臨時表           

  Where br.StudentID=d.StudentID

       end                     

理解觸發器里面的兩個臨時的表:Deleted , Inserted 。注意Deleted 與Inserted分別表示觸發事件的表“舊的一條記錄”和“新的一條記錄”。一個數據庫系統中有兩個虛擬表用於存儲在表中記錄改動的信息,分別是:                             

           虛擬表Inserted                     虛擬表Deleted

在表記錄新增時       存放新增的記錄                         不存儲記錄         

修改時              存放用來更新的新記錄                   存放更新前的記錄         

刪除時              不存儲記錄                             存放被刪除的記錄

     一個Update 的過程可以看作為:生成新的記錄到Inserted表,復制舊的記錄到Deleted表,然后刪除Student記錄並寫入新紀錄。

 

 

觸發器語句中使用了兩種特殊的表:deleted 表和 inserted 表。
Deleted 表用於存儲 DELETE 和 UPDATE 語句所影響的行的復本。在執行 DELETE 或 UPDATE 語句時,行從觸發器表中刪除,並傳輸到 deleted 表中。Deleted 表和觸發器表通常沒有相同的行。

Inserted 表用於存儲 INSERT 和 UPDATE 語句所影響的行的副本。在一個插入或更新事務處理中,新建行被同時添加到 inserted 表和觸發器表中。Inserted 表中的行是觸發器表中新行的副本。

1.插入操作(Insert) 
Inserted表有數據,Deleted表無數據 

2.刪除操作(Delete) 
Inserted表無數據,Deleted表有數據 

3.更新操作(Update) 
Inserted表有數據(新數據),Deleted表有數據(舊數據)

 
--------------------- 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM