2011-08-05 67 views
0

INSTEAD INSERT和AFTER INSERT可能在同一個觸發器內嗎?如何在同一個觸發器內插入INSTEAD INSERT和INSERT? (sql server)

CREATE TRIGGER tgInsertCompare 
    ON trigger_insert_teste 
    INSTEAD OF INSERT 
    AS 
     DECLARE @testeID2 int 
     SET @testeID2 = (SELECT TOP 1 id FROM trigger_insert_teste ORDER BY id DESC) 
     PRINT(@testeID2) 
    GO 

    AFTER INSERT 
    AS 
    BEGIN 

    SET NOCOUNT ON; 

    DECLARE @testeID int 
    SET @testeID = (SELECT TOP 1 id FROM trigger_insert_teste ORDER BY id DESC) 
    PRINT(@testeID) 
    END 
    GO 

使用SQL Server 2008的

+0

這個問題是寫的,所以我們不能真正幫助你。請包含不那麼普遍的代碼,使其毫無意義。我可以想象,在任何情況下,我都不想爲同一張桌子做一個而不是做一個。但是從你的示例中,我擔心你正在編寫一個觸發器,該觸發器一次只能處理一條記錄,這是一個sql反模式,可能會導致數據完整性問題。 – HLGEM

回答

5

沒有,但爲什麼你會需要?如果您自己控制插入(使用INSTEAD OF),則應該能夠將AFTER INSERT代碼添加到最後。

+0

@robinson我需要在插入表之前得到ID,然後我需要在表格中插入新的ID,你有沒有做過? – soamazing

+0

@soamazing:上面的代碼永遠不會執行插入操作。你如何做到這一點(無論是手動ID還是身份/默認ID)應該很容易找出是否可以提供更有意義的例子。 –

相關問題