Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql触发器IF语句_Sql_Sql Server 2008_Triggers - Fatal编程技术网

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
。是的,我已经这样做了。