求救,关于instead of 触发器不修改原表记录

kaqia2003 2012-03-21 09:15:08
create trigger trg_aaa
on 表aaa

instead of update
as

begin


set nocount on

insert 表bbb
(字段1,字段2,字段3,字段4,字段5)
select d.字段1,d.字段2,d.字段3,d.字段4,d.字段5 from deleted d

end
---------------------------------
我想实现的目标是表aaa当是更新的记录,表bbb当中原来的记录,触发器执行后表bbb中有记录,表aaa当中的记录没有改变,求高人指点
...全文
130 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称被占用了 2012-03-21
  • 打赏
  • 举报
回复
那就不要用触发器,在所有UPDATE AAA的操作增加一句INSERT BBB的语句,必要的话组成一个事务

或者分表,把TEXT字段分开,设计上本来大字段就不应该放在经常修改的表
kaqia2003 2012-03-21
  • 打赏
  • 举报
回复
after触发器用过,但是字段中有text等对象,没办法用.我也想用after触发器啊,省事.
  • 打赏
  • 举报
回复
用after触发器。楼上正解
昵称被占用了 2012-03-21
  • 打赏
  • 举报
回复
instead of触发器应该如下写:

create trigger trg_aaa
on 表aaa
instead of update
as
begin

set nocount on
insert 表bbb
(字段1,字段2,字段3,字段4,字段5)
select d.字段1,d.字段2,d.字段3,d.字段4,d.字段5 from deleted d

UPDATE A SET
COL1 = I.COL1
,COL2 = I.COL2
,... -- 除了 唯一而且不修改字段
FROM 表aaa A
,INSERTED I,DELETED D
WHERE A.主键= D.主键
AND D.唯一而且不修改字段= I.唯一而且不修改字段
end
昵称被占用了 2012-03-21
  • 打赏
  • 举报
回复
不了解instead of触发器远离为什么用instead of触发器,改称AFTER触发器吧

create trigger trg_aaa
on 表aaa
AFTER update
as

begin


set nocount on

insert 表bbb
(字段1,字段2,字段3,字段4,字段5)
select d.字段1,d.字段2,d.字段3,d.字段4,d.字段5 from deleted d

end

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧