CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

UPDATE触发器问题!

楼主liyinjjj(独孤残梦)2005-04-01 18:20:38 在 MS-SQL Server / 应用实例 提问

我有两个表  
  表一:user  
  uid|password|name|department|duty|  
  表二:user_detail  
  uid|name|sex|department|duty|phone|fax|mobile|等  
  要求   在user中更新uid或者name|或者department或duty时,同时user_detail中的对应字段也相应更新。INSERT和DELETE触发器已经完成。  
  请问UPDATE触发器怎么写?  
  已知IF   (CCOLUMNS_UPDATED()&29)>0   可以判断1,3,4,5列是否更新  
  问题点数:100、回复次数:1Top

1 楼zjcxc(邹建)回复于 2005-04-01 19:27:08 得分 100

--如果uid是主键,如果同时更新了多条记录的uid的话,可能导致inserted和deleted表的记录无法对应  
  --所以如果要写update触发器的话,在uid被更新时,要求限制只能更新一条记录  
   
  --触发器如下  
  create   trigger   tr_user_update   on   [user]  
  for   update  
  as  
  declare   @row   int  
  set   @row=@@rowcount  
  if   @row=0   return  
   
  if   update(uid)   and   @row>1  
  begin  
  raiserror('更新了uid时,不允许更新多条记录,本次操作取消',1,16)  
  rollback   tran  
  return  
  end  
  if   (COLUMNS_UPDATED()&29)>0  
  if   @row=1  
  update   b   set    
  uid=i.uid,name=i.name,department=i.department,duty=i.duty  
  from   user_detail   b,inserted   i,deleted   d  
  where   b.uid=d.uid  
  else  
  update   b   set    
  uid=i.uid,name=i.name,department=i.department,duty=i.duty  
  from   user_detail   b,inserted   i  
  where   b.uid=i.uid  
  Top

相关问题

  • update触发器的问题
  • update触发器的问题
  • update触发器的问题?
  • update简单触发器
  • UPDATE触发器的问题
  • update触发器的问题
  • sql server7中UPDATE触发器怎么写?
  • 帮我看看这个触发器!!UPDATE!!
  • 关于UPDATE触发器的问题
  • update触发器的问题!望赐教

关键词

  • 触发器
  • uid
  • 更新
  • duty
  • department
  • update
  • 记录
  • row
  • detail
  • inserted

得分解答快速导航

  • 帖主:liyinjjj
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

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