2012-03-21 5 views
1

Я пытаюсь создать триггер в SQL Server 2008 R2. У меня три таблицы, и у них есть отношения PK-FK -FK.Триггер в SQL Server 2008 R2

У меня есть столбец в первой таблице, где имя столбца: STATUS, что столбец имеет значение «неактивный» или «активный», а во второй таблице - столбец FKNEWLoanreviewfieldid, который имеет несколько значений C2, C4, C6 и в третьей таблице. FKWarningtypeID имеет различное значение, например 4,3,2,1.

Я должен создать триггер, так что если FKwarningtypeID обновляется на значение 4, то в первой таблице (где у меня есть status столбец) значение столбца status будет изменен на «активный».

Может любое тело мне помочь.

+0

Кроме того: вы не очень понятно, в вашем вопросе: Вы можете разместить соответствующие части таблиц? Названия таблиц, их ключевые столбцы (имя и тип данных), как они связаны с отношениями FK? –

+0

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

ответ

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

+1

@Sakil: если это сработало и решило вашу проблему, то, пожалуйста, [принимайте ответ] (http://meta.stackexchange.com/q/5234/153998). Это правильная и вежливая вещь. Благодарю. –

Смежные вопросы