• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • SQL Server 2000中的觸發器使用

    發表于:2008-09-23來源:作者:點擊數: 標簽:sqlSQLSql觸發器SERVER
    示例 在本例中,創建了一個德國客戶表和一個墨西哥客戶表。放置在視圖上的INSTEAD OF觸發器將把更新操作重新定向到適當的基表上。這時發生的插入是對CustomersGer表的插入而不是對視圖的插入。 創建兩個包含客戶數據的表: SELECT * INTO CustomersGer FROM
      示例

      在本例中,創建了一個德國客戶表和一個墨西哥客戶表。放置在視圖上的INSTEAD OF觸發器將把更新操作重新定向到適當的基表上。這時發生的插入是對CustomersGer表的插入而不是對視圖的插入。

      創建兩個包含客戶數據的表:

    clearcase/" target="_blank" >cc66 width="90%" align=center bgColor=#dadacf border=1>
    SELECT * INTO CustomersGer FROM Customers WHERE Customers.Country = 'Germany'
    SELECT * INTO CustomersMex FROM Customers WHERE Customers.Country = 'Mexico'

    GO

      在該數據上創建視圖:

    CREATE VIEW CustomersView AS
    SELECT * FROM CustomersGer
    UNION
    SELECT * FROM CustomersMex
    GO

      創建一個在上述視圖上的INSTEAD OF觸發器:

    CREATE TRIGGER Customers_Update2

    ON CustomersView

    INSTEAD OF UPDATE AS

    DECLARE @Country nvarchar(15)

    SET @Country = (SELECT Country FROM Inserted)

    IF @Country = 'Germany'

    BEGIN

    UPDATE CustomersGer

    SET CustomersGer.Phone = Inserted.Phone

    FROM CustomersGer JOIN Inserted

    ON CustomersGer.CustomerID = Inserted.CustomerID

    END

    ELSE

    IF @Country = 'Mexico'

    BEGIN

    UPDATE CustomersMex

    SET CustomersMex.Phone = Inserted.Phone

    FROM CustomersMex JOIN Inserted

    ON CustomersMex.CustomerID = Inserted.CustomerID

    END

      通過更新視圖,測試觸發器:

    UPDATE CustomersView SET Phone = ' 030-007xxxx'
    WHERE CustomerID = 'ALFKI'

    SELECT CustomerID, Phone FROM CustomersView
    WHERE CustomerID = 'ALFKI'

    SELECT CustomerID, Phone FROM CustomersGer
    WHERE CustomerID = 'ALFKI'

      那么具體的講,對于多列數據,如何計算方差呢?:

    CREATE TRIGGER [calT1T2T3] ON dbo.DCLB
    FOR INSERT,UPDATE
    AS
    update P
    SET
    /**//*
    計算方差的觸發器
    */
    P.T1=(I.P1+I.P2+I.P3+I.P4+I.P5+I.P6),
    P.T2=(I.Y1+I.Y2+I.Y3+I.Y4+I.Y5+I.Y6 ),
    P.T3=SQRT(P.T1*P.T1+P.T2*P.T2)

    FROM DCLB AS P INNER JOIN Inserted AS I
    ON P.SID = I.SID

      觸發器的使用很方便,而且也很簡單,重要的是理解inserted過程??蓪PDATE語句看成兩步操作:即捕獲數據前像(before image)的DELETE語句,和捕獲數據后像(after image)的INSERT語句。當在定義有觸發器的表上執行UPDATE語句時,原始行(前像)被移入到deleted表,更新行(后像)被移入到inserted表。觸發器檢查deleted表和inserted表以及被更新的表,來確定是否更新了多行以及如何執行觸發器動作。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>