觸發器,觸發器執行個體

來源:互聯網
上載者:User

觸發器,觸發器執行個體

    雖然接觸過觸發器,可是卻不太深入,有的時候碰到還是照樣不太理解,現在將這一塊空白補上。

觸發器內容基本上如下:


    值得注意的一點是:在觸發器被執行時,系統會建立一個或者兩個暫存資料表Inserted和Deleted。使用者儲存使用者更改行的新值和舊值。對於insert操作只會產生Inserted表,儲存新插入的每條資料;對於delete操作,只會產生Deleted表,儲存被刪除的每條資料;對於update操作會同時產生Inserted表和Deleted表,Deleted表中存放的是更新之前的資料,Inserted表中存放的是更新之後的資料。觸發器中可以直接使用這兩張表。

下面舉個具體的例子來說明一下:

以FOR觸發器為例:

對於login表,原來資料如下:

觸發器的編寫過程如下:

執行如下語句和得到的結果如所示:

    通過上面兩個結果的對比,SQL語句將使用者身份由管理員->操作員,for觸發器改變了使用者密碼,由123->lj。就是這樣一個過程。


sql 觸發器 update的問題

使用更新什麼欄位才執行觸發器就行了

CREATE TRIGGER GXDHSL ON RKD
FOR UPDATE
AS
IF(Update(欄位名))
begin

DECLARE @DHDH VARCHAR(50) --計劃單號
DECLARE @SL decimal(18,6) --修改前數量
DECLARE @DHSL decimal(18,6) --修改後數量
SELECT @DHDH=ysdh,@SL=SSSL FROM DELETED
SELECT @DHSL=SSSL FROM INSERTED
UPDATE GL_QGD SET DHSL=DHSL-ISNULL(@SL,0) WHERE DH=@DHDH
end

go
 
sql 觸發器 update的問題

使用更新什麼欄位才執行觸發器就行了

CREATE TRIGGER GXDHSL ON RKD
FOR UPDATE
AS
IF(Update(欄位名))
begin

DECLARE @DHDH VARCHAR(50) --計劃單號
DECLARE @SL decimal(18,6) --修改前數量
DECLARE @DHSL decimal(18,6) --修改後數量
SELECT @DHDH=ysdh,@SL=SSSL FROM DELETED
SELECT @DHSL=SSSL FROM INSERTED
UPDATE GL_QGD SET DHSL=DHSL-ISNULL(@SL,0) WHERE DH=@DHDH
end

go
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.