2013-12-12 3 views
1

У меня есть следующий триггер создан при обнаружении значения определенного столбца:SQL триггера IF оператор

ALTER TRIGGER [dbo].[trCompletedDate] ON [dbo].[Record] 
FOR UPDATE AS BEGIN 
IF(UPDATE(Completed)) 

UPDATE Record SET Completed_Date=DATEADD(hh, 7, GETDATE()) 
FROM Record 
INNER JOIN Inserted ON Record.[ID]= Inserted.[ID] 
WHERE Record.Completed = 1 
END 

Который работает нормально, но я хотел бы добавить оператор IF, чтобы изменить значение Completed_Date к другое значение, когда Record.Completed = 0.

Я просто не знаю, как синтаксис идет.

+0

Таким образом, вы можете попробовать добавить ' IF' блок? – Kermit

+0

вот и все, я просто не знаю, для чего это синтаксис. –

+0

Вы можете легко найти синтаксис с помощью поисковой системы ... –

ответ

3
UPDATE Record SET Completed_Date = 
CASE WHEN Record.Completed = 1 THEN 
    DATEADD(hh, 7, GETDATE()) 
ELSE 
    --Somethin else 
END 
FROM Record 
INNER JOIN Inserted ON Record.[ID]= Inserted.[ID] 
+0

Работает отлично. Спасибо :) –

+0

Необходимо удалить 'WHERE Record.Completed = 1'. – bendataclear

+0

Да, я уже это сделал. –

0

Вы можете использовать CASE заявление:

UPDATE Record 
SET Completed_Date = 
    CASE Record.Completed WHEN 1 THEN DATEADD(hh, 7, GETDATE()) 
          WHEN 0 THEN SOMETHINGELSE END 
FROM Record 
INNER JOIN Inserted ON Record.[ID]= Inserted.[ID] 
WHERE Record.Completed IN (0,1); 
0

Я считаю, что это:

ALTER TRIGGER [dbo].[trCompletedDate] ON [dbo].[Record] 
FOR UPDATE AS BEGIN 
IF(UPDATE(Completed)) 

UPDATE Record SET 
    Completed_Date=if Record.Completed=0 then <othervalue> 
        else DATEADD(hh, 7, GETDATE()) endif 
FROM Record 
INNER JOIN Inserted ON Record.[ID]= Inserted.[ID] 
WHERE Record.Completed = 1 
END 
0

Здесь вы идете:

ALTER TRIGGER [dbo].[trCompletedDate] ON [dbo].[Record] 
FOR UPDATE AS BEGIN 
IF(UPDATE(Completed)) 

UPDATE Record SET Completed_Date= 
    CASE Record.Completed 
     WHEN 1 THEN DATEADD(hh, 7, GETDATE()) 
     WHEN 0 THEN GETDATE() 
    END 
FROM Record 
INNER JOIN Inserted ON Record.[ID]= Inserted.[ID] 
END 
Смежные вопросы