CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

怎么创建如下的触发器

楼主zhuxiao97(小菜哥)2002-06-24 08:25:03 在 MS-SQL Server / 基础类 提问

表一:  
  编号,姓名,性别  
  表二:  
  编号,文化程度.  
   
  就是在删除表一中的记录时,判断一下表二是否有对应的编号存在,要是存在则取消删除,提示"不能删除此记录" 问题点数:100、回复次数:5Top

1 楼OpenVMS(半知半解)回复于 2002-06-24 08:45:10 得分 0

create   trigger   mytrigger   on   表一  
  for   delete  
  as  
  if   (select   a.编号   from   表二   as   a,deleted   as   d   where   a.编号=d.编号)   is   not   NULL  
  BEGIN  
  raiserror(   N'不能删除此记录',16,1)  
  ROLLBACK   TRANSACTION  
  ENDTop

2 楼mazhayang(蚂蚱先生)回复于 2002-06-24 08:46:39 得分 0

create   tigger   deltab1  
  on   tab1  
  for   delete   as  
  if   exist(select   *   from   tab2   where   id=xxx)  
        delete   from   tab2   where   id=xxx  
  else  
        raiseerror   ('cant   delete   ',16,0)  
  Top

3 楼nononono(null,null)回复于 2002-06-24 08:52:18 得分 0

CREATE   TRIGGER   [TRI_表一_DEL]   ON   [表一]    
  FOR   DELETE    
  AS  
   
  IF   EXISTS   (SELECT   *   FROM   表二   WHERE   编号   IN   (SELECT   编号   FROM   DELETED))  
  BEGIN  
          ROLLBACK   TRANSACTION  
          RAISERROR   ('不能删除。',16,10);  
          RETURN  
  END  
   
  RETURN  
  Top

4 楼Yang_(扬帆破浪)回复于 2002-06-24 08:54:35 得分 80

create   trigger   tr_table1_delete  
  on   table1    
  for   delete  
  as  
   
  if   exists   (select   *   from   table2   where   编号   in   (select   编号   from   deleted))  
      begin  
        RAISERROR   '不能删除此记录',16,1  
        ROLLBACK   TRANSACTION  
      end  
  go  
  Top

5 楼Yang_(扬帆破浪)回复于 2002-06-24 08:55:34 得分 10

create   trigger   tr_table1_delete  
  on   table1    
  for   delete  
  as  
   
  if   exists   (select   *   from   table2   where   编号   in   (select   编号   from   deleted))  
      begin  
        RAISERROR   '不能删除此记录',16,1  
        ROLLBACK   TRANSACTION  
      end  
  go  
  Top

6 楼hanwen(汉文)回复于 2002-06-24 09:03:27 得分 10

create   tigger   table1_del   on   tabl1  
  for   delete   as  
   
  declare   @del_id   integer  
   
  select   @del_id=id  
  form   deleted  
   
  if   exist(select   *   from   tabl2   where   id=@del_id   )  
        delete   from   tabl2   where   id=@del_id    
  else  
        raiseerror   ('cant   delete   ',16,0)  
  Top

相关问题

  • 怎么创建这样的触发器(在线等...)
  • 如何创建触发器?
  • 如何创建触发器
  • 创建触发器出错?????
  • 用delphi创建触发器
  • “创建的触发器带有编译错误”是怎么回事?
  • 怎么关掉触发器?
  • 怎么编写触发器?
  • 怎么写触发器???sos
  • 在触发器中,怎么行到本触发器的名子?

关键词

  • deleteasif
  • 编号
  • raiserror
  • del
  • delete
  • 删除
  • trigger
  • 不能删除此记录
  • exist
  • rollback transaction

得分解答快速导航

  • 帖主:zhuxiao97
  • Yang_
  • Yang_
  • hanwen

相关链接

  • SQL Server类图书

广告也精彩

反馈

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