SQL触发器 修改一个记录的某个值 修改这条记录的LASTTIME为现在时间
修改一个记录的某个字段值以后修改这条记录的LASTTIME的值为现在时间CREATETRIGGER[tig_update]ON表名FORUPDATEASbeginUPDA...
修改一个记录的某个字段值以后
修改这条记录的LASTTIME的值 为现在时间
CREATE TRIGGER [tig_update] ON 表名
FOR UPDATE
AS
begin
UPDATE 表名 SET lasttime = GETDATE()
end
我现在是这样写的 有什么不对 怎么定义到这条记录啊 展开
修改这条记录的LASTTIME的值 为现在时间
CREATE TRIGGER [tig_update] ON 表名
FOR UPDATE
AS
begin
UPDATE 表名 SET lasttime = GETDATE()
end
我现在是这样写的 有什么不对 怎么定义到这条记录啊 展开
4个回答
展开全部
UPDATE 表名 SET lasttime = GETDATE()
WHERE 表名.主键 IN ( SELECT 主键 FROM inserted )
WHERE 表名.主键 IN ( SELECT 主键 FROM inserted )
参考资料: http://hi.baidu.com/wangzhiqing999/blog/item/6a325cbb7601cf1f18d81f60.html
展开全部
UPDATE 表名 SET lasttime = GETDATE() where id in(select id from inserted)
触发器里可以用到 inserted,deleted这两张特殊的表
触发器里可以用到 inserted,deleted这两张特殊的表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、定位需要修改的记录,有两种办法,一是通过游标逐行遍历,而是通过虚拟表inserted进行数据集操作,你的问题比较简单,后者即可,书写也简单。
2、关键问题:需要判断是否修改了你说的“某个值”,通过if update of(字段)来过滤,只有当你想“修改任何字段,都要更新时间”时,才不用过滤。
IF UPDATE OF(某字段) -- 看你的意图,是否加上这一行
UPDATE 表名
SET t.lasttime = GETDATE()
FROM 表名 t, inserted i
WHERE t.主键字段 = i.主键字段
AND t.主键字段2 = i.主键字段2
最后一行是当你的表的主键不是1个字段构成,而是2个字段复合而成时用,如果字段更多,仿照这个写法继续罗列,若的确之后1个字段,则不需要这些。
2、关键问题:需要判断是否修改了你说的“某个值”,通过if update of(字段)来过滤,只有当你想“修改任何字段,都要更新时间”时,才不用过滤。
IF UPDATE OF(某字段) -- 看你的意图,是否加上这一行
UPDATE 表名
SET t.lasttime = GETDATE()
FROM 表名 t, inserted i
WHERE t.主键字段 = i.主键字段
AND t.主键字段2 = i.主键字段2
最后一行是当你的表的主键不是1个字段构成,而是2个字段复合而成时用,如果字段更多,仿照这个写法继续罗列,若的确之后1个字段,则不需要这些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
少一个行级关键字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询