CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

触发器问题 大家帮忙!谢谢~~~

楼主ljb2000(一天一夜)2003-09-02 23:31:42 在 MS-SQL Server / 基础类 提问

假设在触发器有下面代码片段:  
  declare   @flag   int  
  set   @tmpflag   =   select   max(i)   from   tableB  
  insert   temp_tableA(id,name,flag)   select   id,name,@tmpflag+1   from   inserted  
   
  这段代码在tableA   UPDATE时触发,  
  我想得到的结果是,不论同时UPDATE多少条记录都会有如下结果:  
  temp_tableA:  
  'id_a'   'name_a'   1  
  'id_b'   'name_b'   2  
  'id_c'   'name_c'   3  
   
  但是目前代码如果象上面那样写,只在每次UPDATE一条记录时才会实现,  
  如果根据条件同时UPDATE很多条记录会产生下面的结果:  
  temp_tableA:  
  'id_a'   'name_a'   1  
  'id_b'   'name_b'   1  
  'id_c'   'name_c'   1  
   
  请问我怎样写才能得到我想要的结果呢?  
  问题点数:0、回复次数:6Top

1 楼yun198183(钱钱0.7)回复于 2003-09-03 00:05:11 得分 0

up学习Top

2 楼w_rose(w_rose)回复于 2003-09-03 00:32:48 得分 0

declare   @flag   table(row   int   identity,id   int)  
  insert   @flag(id)   select   id   from   inserted  
  insert   temp_tableA(id,name,flag)    
      select   i.id,i.name,(select   isnull(max(i),0)   from   tableB)+f.row    
          from   inserted   as   i   inner   join   @flag   as   f   on   i.id=f.id  
  Top

3 楼ljb2000(一天一夜)回复于 2003-09-03 09:20:21 得分 0

上去啊  
  大家帮忙  
  谢谢Top

4 楼yujohny(踏网无痕)回复于 2003-09-03 09:26:22 得分 0

declare   @tmpflag   int  
  select   @tmpflag   =   max(i)   from   tableB  
  select   id,name,identity(int,1,1)   as   no   into   #tmp   from   inserted  
  insert   temp_tableA(id,name,flag)   select   id,name,@tmpflag+no   from   #tmpTop

5 楼pengdali()回复于 2003-09-03 09:31:57 得分 0

declare   @flag   int  
  set   @tmpflag   =   select   max(i)   from   tableB  
  insert   temp_tableA   (id,name,flag)   select   id,name,@tmpflag+(select   sum(1)   from   inserted   where   id<=tem.id)   from   inserted   temTop

6 楼ljb2000(一天一夜)回复于 2003-09-03 12:23:11 得分 0

id是会被修改的   所以不能用它做为条件  
   
  我想解决的是在某个表里写个UPDATE触发器  
  当其被UPDATE时往其对应的目的表里写数据  
  每条记录被UPDATE时同时将deleted和inserted里的记录插入目的表  
  但是当多条记录被UPDATE时  
  SQLSERVER会先把所有的deleted里的记录先插入目的表  
  再把所有的inserted里的记录插入目标表  
  根据需求不可以这样  
  必须逐条UPDATE  
  即deleted后inserted再进行下一条的deleted和inserted  
  我想到了使用游标  
  不过我从没用过  
  看帮助也搞不清楚  
  哪位老大能帮忙给个例子啊?  
  我先谢过了!!!Top

相关问题

  • 触发器?!
  • 触发器
  • 触发器
  • 求触发器
  • 触发器
  • 触发器(ORACLE)!!!!!!!!!
  • 触发器(ORACLE)!!!!!!!!!
  • oracle 触发器??
  • 触发器!
  • 求触发器!!!

关键词

  • 代码
  • tmpflag
  • tablea
  • flag
  • 记录
  • 结果
  • temp
  • max
  • inserted
  • update

得分解答快速导航

  • 帖主:ljb2000

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo