触发器多表更新问题

之穆 2005-08-03 02:55:55
有两个表A,B,分别有id字段,现在的问题是,我要在表A上建一个Update触发器,当表A上的其他字段发生改变时,表B中id值与表A中id值相等的记录也要发生改变。我想问的是,我在表A的Update触发器中怎样才能获得数据发生改变的那条记录的id?
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
GRLD8888 2005-08-03
  • 打赏
  • 举报
回复
---建立测试环境

create table a (id int,quantity int)
create table b (id int,amount int)
insert a select 1,45


create trigger tr1
on a
for update
as
update b set amount=amount+quantity from inserted a join b on a.id=b.id
vivianfdlpw 2005-08-03
  • 打赏
  • 举报
回复
deleted 和 inserted 是逻辑(概念)表。这些表在结构上类似于定义触发器的表(也就是在其中尝试用户操作的表);这些表用于保存用户操作可能更改的行的旧值或新值。例如,若要检索 deleted 表中的所有值,请使用:
SELECT *
FROM deleted

如果兼容级别等于 70,那么在 DELETE、INSERT 或 UPDATE 触发器中,SQL Server 将不允许引用 inserted 和 deleted 表中的 text、ntext 或 image 列。不能访问 inserted 和 deleted 表中的 text、ntext 和 image 值。若要在 INSERT 或 UPDATE 触发器中检索新值,请将 inserted 表与原始更新表联接。当兼容级别是 65 或更低时,对 inserted 或 deleted 表中允许空值的text、ntext 或 image 列,将返回空值;如果这些列不可为空,则返回零长度字符串。

34,593

社区成员

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

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