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

编写简单触发器

楼主yrb(老土傻帽)2006-03-02 16:44:33 在 MS-SQL Server / 基础类 提问

有这样两个表  
  create   table   Customers(  
      id   char(6)   not   null,  
      name   char(20)   not   null,  
      primary   key(id))  
   
  create   table   Orders(  
      id   integer   identity,  
      CustomerID   char(6)   not   null,  
      Freight   decimal(12,2)   not   null,  
      primary   key(id))  
   
  现在我需要通过触发器解决如下问题:  
  1、如果修改customers表中某条记录的id时,相应修改orders表中customerid列,保持这两个表修改前后的对应关系。  
  2、如果删除customers表中的某条或某些符合条件的记录时,将orders表中相应记录一并删除,orders表中没有垃圾数据。  
   
  兄弟对sql不熟悉,请教各位,谢谢!! 问题点数:100、回复次数:8Top

1 楼lsqkeke(可可)回复于 2006-03-02 16:46:57 得分 2

主键可以去修改??Top

2 楼lsqkeke(可可)回复于 2006-03-02 16:50:51 得分 2

安全不啊???  
  不提倡这样!  
  那你修改时是用name去定位一条记录,来修改主键的?Top

3 楼zhuhuying(zhy)回复于 2006-03-02 17:02:19 得分 1

你那都是表的主键怎么改呀?Top

4 楼msjqd(黑色幽默)回复于 2006-03-02 17:08:21 得分 5

主键是可以修改的  
      不过修改主键不提倡的  
      这样会频繁的发生主键重复错误的!!!Top

5 楼yrb(老土傻帽)回复于 2006-03-02 17:09:03 得分 0

主键为什么不可修改呢?可以用旧的主键值定位修改为新的主键值啊,比如:  
  update   customers   set   id   =   '000002'   where   id   =   '000001'  
   
  当然表customers可以修改为  
   
  create   table   Customers(  
      id00   integer   identity,  
      id   char(6)   not   null,  
      name   char(20)   not   null,  
      primary   key(id00))Top

6 楼yrb(老土傻帽)回复于 2006-03-02 17:10:56 得分 0

谢谢各位,我现在关心的是怎么写这样的触发器。Top

7 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-03-02 17:19:38 得分 90

Create   trigger   TRG_Customers   on   Customers  
  for   update,delete,insert  
  as  
  Begin  
  if   not   exists   (select   1   from   inserted)   --删除  
  begin  
  delete   Orders   from   deleted   D     where   CustomerID=D.id  
   
  end  
   
  if     exists   (select   1   from   inserted)   and   exists   (select   1   from   deleted)   --更新  
  begin  
  Update   Orders   set   CustomerID=I.id   from   Customers   A   inner   join   inserted   I    
  on   A.id=I.id  
  end  
  if   not   exists   (select   1   from   deleted)   --插入  
  begin  
  --插入自己写  
  end  
  end  
   
   
  Top

8 楼yrb(老土傻帽)回复于 2006-03-02 17:31:17 得分 0

谢谢zlp321002兄。  
  Top

相关问题

  • 怎么编写触发器?
  • 触发器简单问题
  • 简单的触发器
  • 求一简单触发器
  • update简单触发器
  • 简单触发器问题
  • 触发器!(简单问题)
  • 如何编写这个触发器
  • 触发器的编写,帮帮忙啊!
  • 如何编写这样的触发器

关键词

  • 修改
  • null
  • 触发器
  • 表
  • 键
  • 删除
  • customerid
  • 主键
  • customers
  • 谢谢

得分解答快速导航

  • 帖主:yrb
  • lsqkeke
  • lsqkeke
  • zhuhuying
  • msjqd
  • zlp321002

相关链接

  • SQL Server类图书

广告也精彩

反馈

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