• <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-9-23 17:43 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 58次 | 進入軟件測試論壇討論

    領測軟件測試網
      示例

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

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

    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/

    TAG: server Server SERVER sql SQL Sql 觸發器


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品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>