2014-08-28 118 views
1

我安装了SQL Server 2014 Express以稍微测试一下(以前从未使用过)并遇到一些困难,主要是触发器。SQL Server 2014 Express - 更新触发器没有执行

首先,我不知道为什么选择表Triggers(所选表格)下的“新触发器”呈灰色显示。

也许是因为我没有使用过的表格中...不知道....

嗯,我试图用一个查询做到这一点:

create trigger dbo.after_update 
on dbo.MyTable 
for UPDATE 
as begin 
    if not update(edited) 
     update dbo.Mytable 
     set edited = GETDATE() 
     where TW_ID IN (SELECT TW_ID FROM inserted) 
END 
GO 

我得到的错误:

消息8197,级别16,状态4,步骤after_update,行1
'MyTable的' 不存在或为这种操作无效的对象。

TW_IDidentity列。编辑为smalldatetime

没有连接表。我想要的是当有人更新表格时更新列edited

+1

您是否区分大小写?这张桌子是否真的存在?您发布的代码与更新语句中的对象名称和表格没有相同的大小写。 – 2014-08-28 21:33:24

+0

表存在,当然...其余的,我不知道....就像我说的,从来没有用过这个...... :) – user3927897 2014-08-28 21:38:10

回答

0
CREATE TRIGGER dbo.after_update 
ON dbo.MyTable 
FOR UPDATE 
AS 
BEGIN 
    SET NOCOUNT ON; 

    UPDATE t 
     SET t.edited = GETDATE() 
    FROM dbo.Mytable t 
    INNER JOIN inserted I ON t.TW_ID = I.TW_ID 
END 
GO 
+0

有没有连接表。我想要的只是当有人更新表格时更新“编辑”字段。 – user3927897 2014-08-28 21:43:31

+0

恰好您只更新已更新的行,因此您需要使用插入的表连接表,该表只会过滤由更新语句更新的行并使用当前日期时间更新其编辑的字段。 – 2014-08-28 21:46:14

+0

为什么这个触发器在插入之后也触发? – user3927897 2014-08-29 00:42:35