SQL触发器的问题

zhaoluyang2000 2009-06-06 11:49:37
一个表
名字 table
有2个字段
ID (P) 和 name

1 a
2 b
3 c
当我更新这个表的时候
触发 触发器
这个触发器 怎么 获得 被更新的这列的 ID ?知道的说下
...全文
39 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoluyang2000 2009-06-07
  • 打赏
  • 举报
回复
5楼的你回答的 很贴切,我 就不明白inserted 所谓的新镜像 是什么东西,直接用?还是 什么意思
zhaoluyang2000 2009-06-07
  • 打赏
  • 举报
回复
更新 id 有人会说 这不多此一举吗,我更新是在前台更新
对于数据库 那表现为 就是 ID 为 2的name 编程 了 d
后台没有前台 更新的 具体 id
所以 写触发器 的时候 在 where 后边跟的 ID=? 这个 ?是我要的 怎么获得
yongandenaiba 2009-06-07
  • 打赏
  • 举报
回复
inserted 是包含所受影响行的新镜像
deleted 是包含旧镜像
zhaoluyang2000 2009-06-07
  • 打赏
  • 举报
回复
ID (P) 和 name

1 a
2 b
3 c
比如我更新 id 为 2 的name 让他 成为 d
我想获得 获得 这个被更新的 列的 ID
应该怎么写,
不是意义不意义的问题 我是发复杂的问题抽象成简单的问题。说复杂了 还有人回吗···
zhaoluyang2000 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qianjin036a 的回复:]
SQL code
create trigger getid
on table
after update
as
select id from inserted
[/Quote]
你这个 inserted 是什么意思?说实话 我这个帖子 最核心要问的就是怎么获得 这个被更新的列的 id
-晴天 2009-06-07
  • 打赏
  • 举报
回复

create trigger getid
on table
after update
as
select id from inserted
jiangshun 2009-06-07
  • 打赏
  • 举报
回复
感觉没价值啊
要得到跟新的那条记录,用存储过程就是了
wayne2013 2009-06-07
  • 打赏
  • 举报
回复
对头,看来基础没打牢
ai_li7758521 2009-06-07
  • 打赏
  • 举报
回复
DELETED 指定由更新或删除操作删除的值。以 DELETED 为前缀的列反映 UPDATE 或 DELETE 语句完成之前的值。
NSERTED 指定由插入操作或更新操作添加的值。以 INSERTED 为前缀的列反映 UPDATE 或 INSERT 语句完成之后
但在触发器执行之前的值。
-晴天 2009-06-07
  • 打赏
  • 举报
回复
在进行update时,会自动生成两个临时表,一个是 inserted,一个是 deleted.后者是更新时被更新的行,前者是更新时重写入表中的行.如果你更新了表,那么 inserted 表中的id列值就是你更新后的id.
不过,前台对记录进行更新时,一般都要把id带出来,确定要更新哪一条记录的,加上很少(或者说基本不)直接更改id列,那,前台就应该有相关的id,否则连更新哪条记录都很难确定.所以,楼主恐怕还是要从前台程序或者算法上好好考虑一下才对.

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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