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

求一SQL语句(触发器)

楼主fdlqcc()2003-09-02 18:43:22 在 MS-SQL Server / 疑难问题 提问

有两个表   :  
  主表table1:no1,xh,a,b,c,d   其中no1为自增字段  
  子表table1:no2,xh,e,f,g,h,i,j   其中no2为自增字段  
   
  我想用触发器对主从表的插入、删除、修改,请问各位高手语句怎么写???谢谢!!  
  问题点数:40、回复次数:9Top

1 楼txlicenhe(马可)回复于 2003-09-02 18:45:25 得分 0

不知楼主想要什么?Top

2 楼fdlqcc()回复于 2003-09-02 18:48:53 得分 0

当子表增加记录时,能增加主表记录  
  当主表记录删除时自动删除子表记录,  
  这样的触发器语句怎么写????Top

3 楼yujohny(踏网无痕)回复于 2003-09-02 18:50:09 得分 5

怎么增加,增加哪些字段,就增加xh字段吗?Top

4 楼fdlqcc()回复于 2003-09-02 18:54:28 得分 0

我用触发器增加主表记录时可能是因为主表中有个自增字段所以会报错  
  CREATE   TRIGGER   Insert_table1   on   table2  
  INSTEAD   OF   Insert  
  AS  
  BEGIN  
      insert   table1   select   *   from   inserted  
  END  
  错误是:仅当使用了列的列表,并且Identity_Insert为ON时,才能在表table1中为标识列指定显式值Top

5 楼txlicenhe(马可)回复于 2003-09-02 19:03:44 得分 10

create   trigger   yourTrigger   on   子表  
  For   insert  
  As  
          insert   主表(...)   select   ...   from   inserted  
   
   
   
  Create   trigger   yourTriggerName   on   主表  
  For   Delete  
  As  
          Delete   子表   where   关键字   in   (select   关键字   from   deleted)  
  Top

6 楼pengdali()回复于 2003-09-02 19:03:48 得分 5

去掉表2的标识属性。  
   
   
  如果你执意要这么做  
  先写  
  SET   IDENTITY_INSERT   yourtable   ON  
  再写  
  insert...Top

7 楼pengdali()回复于 2003-09-02 19:03:49 得分 10

去掉表2的标识属性。  
   
   
  如果你执意要这么做  
  先写  
  SET   IDENTITY_INSERT   yourtable   ON  
  再写  
  insert...Top

8 楼friendliu(无为)回复于 2003-09-02 19:07:29 得分 5

CREATE   TRIGGER   TEST   ON   TABLE1    
  FOR   INSERT,DELETED  
  AS    
  BEGIN  
  IF(INSERTED)  
  BEGIN  
  INSERT   INTO   TABLE2(xh,e,f,g,h,i,j)   SELECT   xh,a,b,c,d,null,null   from   table1  
  END  
  IF(DELETED)  
  BEGIN  
  delete   from   table2   a   where   a.xh     in   (select   xh   from   table1)  
  END  
   
  ENDTop

9 楼junny1017(好好学习,天天上网)回复于 2003-09-10 20:42:16 得分 5

CREATE   TRIGGER   TEST   ON   TABLE1    
  FOR   UPDATE,INSERT,DELETED  
  AS    
  BEGIN  
  DECLARE   @INSCOUNT   INT   ,@DELCOUNT   INT  
  SELECT   @INSCOUNT=count(*)   from   Inserted  
  select   @DELCOUNT=count(*)   from   Delected  
   
  IF(@INSCOUNT>@DELCOUNT)  
  BEGIN  
  INSERT   INTO   TABLE2(xh,e,f,g,h,i,j)   SELECT   xh,a,b,c,d,null,null   from   table1  
  END  
  IF(@INSCOUNT<@DELCOUNT)  
  BEGIN  
  delete   from   table2   a   where   a.xh     in   (select   xh   from   table1)  
  END  
  IF(@INSCOUNT=@DELCOUNT)  
  BEGIN  
      update   table2   set   table2.xh=(select   xh   form   inserted)   from   table1   where   table2.xh=table1.xh  
   
  END  
   
  END  
  Top

相关问题

  • 求一触发器语句
  • 如何通过SQL语句一次Create多个触发器?
  • 如何用SQL语句检查一个触发器存在于哪个表中?
  • 一个触发器语句的问题。
  • 与高手探讨:asp中使用触发器和一般SQL语句,哪一个效率更高?
  • 如何用SQL语句导出触发器的脚本?
  • SQL语句屏蔽触发器的问题
  • 求一SQL中的简单触发器.....
  • 求一SQL中的简单触发器.....
  • 如何在触发器中获取引发该触发器的SQL语句内的相应参数? 好急呀!!!

关键词

  • 语句
  • 字段
  • null
  • 主表
  • 触发器
  • xh
  • inscount
  • delcount
  • 表
  • table1

得分解答快速导航

  • 帖主:fdlqcc
  • yujohny
  • txlicenhe
  • pengdali
  • pengdali
  • friendliu
  • junny1017

相关链接

  • SQL Server类图书

广告也精彩

反馈

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