歡迎來到人人文庫網(wǎng)! | 幫助中心 人人文檔renrendoc.com美如初戀!
人人文庫網(wǎng)

[SQL Server] TRIGGER 觸發(fā)器獲得insert, delete, update行的信息

-- dbo.trGroups.SQL
   
IF EXISTS    (
    
SELECT * FROM sysobjects WHERE
        name 
= 'trGroups' AND type = 'TR')
BEGIN
    
DROP TRIGGER trGroups
    
IF NOT EXISTS    (
        
SELECT * FROM sysobjects WHERE
            name 
= 'trGroups' AND type = 'TR')
        
PRINT 'DROP trGroups SUCCEEDED'
    
ELSE
        
PRINT 'DROP trGroups FAILED'
END
ELSE
    
PRINT 'Attempting to CREATE trGroups'
GO

CREATE TRIGGER dbo.trGroups
    
ON groups
    AFTER 
INSERTUPDATEDELETE
AS

    
-- This trigger submits a cached rates delete job for modified groups.
    -- It also updates the groups' last modified columns for modified groups.
    -- It also updates the groups' state (if currently unspecified) based on 
    -- the (first) state extracted from groups' zip code for new/modified groups.
    -- No error checking is currently being performed.

    
SET NOCOUNT ON -- stop display of rowcount messages

    
DECLARE
        
@groupID        int,
        
@deletedCount    int,
        
@returnCode    int
    
    
SELECT 
        
@deletedCount    = COUNT(*)
    
FROM
        deleted 
WITH (NOLOCK)

    
IF @deletedCount > 0
    
BEGIN
        
DECLARE groupIDCursor CURSOR
        FAST_FORWARD
        
FOR
            
SELECT DISTINCT
                t1.groupID
            
FROM
            (
                
SELECT
                    groupID
                
FROM
                    inserted 
WITH (NOLOCK)

                
UNION

                
SELECT
                    groupID
                
FROM
                    deleted 
WITH (NOLOCK)
            ) 
as t1

        
OPEN groupIDCursor

        
FETCH NEXT
            
FROM
                groupIDCursor
            
INTO
                
@groupID

        
WHILE @@FETCH_STATUS = 0
            
BEGIN
                
EXEC @returnCode = dbo.spCachingModuleAddJobDeleteCachedRatesByGroupID
                    
@groupID = @groupID

                
FETCH NEXT
                    
FROM
                        groupIDCursor
                    
INTO
                        
@groupID
            
END
        
        
CLOSE groupIDCursor    
        
DEALLOCATE groupIDCursor
    
END


GO

IF EXISTS    (
    
SELECT * FROM sysobjects WHERE
        name 
= 'trGroups' AND type = 'TR')
    
PRINT 'CREATE trGroups SUCCEEDED'
ELSE
        
PRINT 'CREATE trGroups FAILED'
GO

 

 觸發(fā)器語句中使用了兩種特殊的表:deleted 表和 inserted 表。
Deleted 表用于存儲 DELETE 和 UPDATE 語句所影響的行的復(fù)本。在執(zhí)行 DELETE 或 UPDATE 語句時,行從觸發(fā)器表中刪除,并傳輸?shù)?deleted 表中。Deleted 表和觸發(fā)器表通常沒有相同的行。

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

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

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

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


關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

網(wǎng)站客服QQ:2881952447     

copyright@ 2020-2024  renrendoc.com 人人文庫版權(quán)所有   聯(lián)系電話:400-852-1180

備案號:蜀ICP備2022000484號-2       經(jīng)營許可證: 川B2-20220663       公網(wǎng)安備川公網(wǎng)安備: 51019002004831號

本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知人人文庫網(wǎng),我們立即給予刪除!