sql触发器IF语句
我为检测到特定列的值创建了以下触发器:sql触发器IF语句,sql,sql-server-2008,triggers,Sql,Sql Server 2008,Triggers,我为检测到特定列的值创建了以下触发器: 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 Rec
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语句,当Record.Completed=0时,将Completed_Date的值更改为另一个值
我只是不确定语法是怎么回事。您可以使用以下语句:
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]
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);
我认为:
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
在[dbo].[Record]上更改触发器[dbo].[trCompletedDate]
用于在开始时更新
如果(更新(完成))
更新记录集
完成日期=如果记录。完成日期=0,则
else DATEADD(hh,7,GETDATE())endif
记录在案
在记录上插入的内部联接。[ID]=插入的。[ID]
其中Record.Completed=1
结束
给你:
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
那么,你能尝试添加一个
IF
块吗?就是这样,我只是不知道它的语法是什么。你可以很容易地在搜索引擎中找到语法…效果很好。谢谢:)需要删除WHERE记录。Completed=1
。是的,我已经这样做了。