2012-03-21 118 views
1

我試圖在SQL Server 2008 R2中創建觸發器。我有三張桌子,他們有PK-FK -FK的關係。SQL Server 2008 R2中的觸發器

我有第一個表的列,其中列的名稱是STATUS該列的值爲'inactive'或'active',第二個表中的列爲FKNEWLoanreviewfieldid,其中有多個值C2,C4,C6,在第三個表中我有FKWarningtypeID具有不同的值,如4,3,2,1。

我必須創建一個觸發器,以便如果FKwarningtypeID更新爲值4然後在第一個表(其中i有status列)status列值將被修改以「主動」。

任何機構都可以幫助我。

+0

另外:你不是在你的問題很清楚:你可以張貼的表的相關碎片?表名,它們的關鍵列(名稱和數據類型),它們如何在FK關係方面進行連接? – 2012-03-21 19:17:06

+0

http://okayguru.blogspot.co.uk/2012/03/types-of-triggers-and-creating-triggers.html – Virus 2012-03-28 15:02:50

回答

3

你需要的東西是這樣的:

CREATE TRIGGER trg_UpdateYourColumn 
FOR UPDATE ON dbo.YourThirdTableHere 
AS 
    -- update the first table 
    UPDATE 
     dbo.YourFirstTableHere 
    SET 
     -- set [Status] to 'Active' 
     -- (I sure hope this isn't *REALLY* stored as a *STRING* value!) 
     [Status] = 'Active' 
    FROM 
     dbo.YourFirstTableHere t1 
    INNER JOIN 
     -- join first and second table on some common column    
     dbo.YourSecondTableHere t2 ON t1.XX = t2.XX 
    INNER JOIN 
     -- join second and third table on some common column 
     dbo.YourThirdTableHere t3 ON t2.YY = t3.YY 
    INNER JOIN 
     -- join third table with the "Inserted" pseudo table 
     Inserted i ON t3.ID = i.ID  
    INNER JOIN 
     -- join third table with the "Deleted" pseudo table 
     Deleted d ON t3.ID = d.ID 
    WHERE 
     i.FKwarningtypeID = 4  -- new value is 4 
     AND d.FKwarningtypeID <> 4 -- old value was *NOT* 4 
+0

非常感謝。是的,它的工作。 – vigilant 2012-04-05 14:30:04

+1

@Sakil:如果它能夠解決您的問題,請[接受答案](http://meta.stackexchange.com/q/5234/153998)。在SO上做這件事是正確和有禮貌的事情。謝謝。 – 2012-04-05 14:44:08