数据库问题

关于sql server更新触发器,我在A表上创建了一个更新触发器,当A表数据有更新时将B表同ID的数据变成和A表一样。但A表里面可能有很多条数据,我只想当我更改A表的一个ID时,只更新对应ID的B表里面的数据,而不是全部更新A,B两表id相同的数据

例如A表有 ID 姓名两个字段3行数据,我更新了A表ID为1的数据,我也想通过触发器更新B表ID为1的数据,而不是B表所有与A表相同的数据

FineReport 帆软用户p9k8MX4NIW 发布于 2023-5-11 08:29 (编辑于 2023-5-11 08:32)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
青春只因年少Lv6中级互助
发布于2023-5-11 08:47(编辑于 2023-5-11 08:53)

参考(更时新使用新值表的数据,应该就只更新新的数据了,而不是所有数据)

https://blog.csdn.net/alyh1314/article/details/116231300

https://blog.csdn.net/yanglei0620/article/details/118364047

1.在update触发器中,分别有着两个表,inserted和deleted表,分别存放着 新值与旧值。

2.在else中  要指明 所修改的值来自inserted表

//https://blog.csdn.net/qq_43622155/article/details/105498366

最佳回答
0
snrtuemcLv8专家互助
发布于2023-5-11 08:31

那你要注意,AB表ID都是唯一,而且还一对一的

这样B表可以根据A表ID更新数据,要么还有其他列,+ID列可以做成唯一

不然只能是对应相同主键全部更新的

  • 帆软用户p9k8MX4NIW 帆软用户p9k8MX4NIW(提问者) ID,AB表肯定是一对一的,但是更新的话我只想当A表,更新一行数据,B表就更新一行数据。而不是B表里面所有与A表相同的ID都要进行更新
    2023-05-11 08:36 
  • 浅吟小时光 浅吟小时光 回复 帆软用户p9k8MX4NIW(提问者) 你这前后矛盾,,
    2023-05-11 08:47 
  • 浅吟小时光 浅吟小时光 回复 帆软用户p9k8MX4NIW(提问者) 又说是一对一,又说B表所有与A表相同ID,这是一对多吧
    2023-05-11 08:48 
  • snrtuemc snrtuemc 回复 帆软用户p9k8MX4NIW(提问者) 既然是一对一,那就写触发器的时候,可以根据ID做where 限制,这样只会更新对应ID的数据的
    2023-05-11 08:49 
  • 帆软用户p9k8MX4NIW 帆软用户p9k8MX4NIW(提问者) 回复 snrtuemc A表中有id,1,2,3三行,B表中也会会ID,1,2,3三行与其一一对应,我只改了A表ID为1的数据,我也只想修改B表ID为1的数据。而不是B表ID 为1,2,3都更新,用where限制条件的话,所有ID相同的话都会进行更新,而不是只更新一行
    2023-05-11 09:00 
  • 2关注人数
  • 344浏览人数
  • 最后回答于:2023-5-11 08:53
    请选择关闭问题的原因
    确定 取消
    返回顶部