我的第一个触发器练习

原创 2005年03月04日 13:53:00

表ExA如下:
CREATE TABLE ExA (
 id int IDENTITY (1, 1) NOT NULL ,
 status bit NULL ,
 primary key (id)
)
select * from ExA
id          status
----------- ------
4           1
6           1

 

表ExB如下:
CREATE TABLE ExB (
 id int IDENTITY (1, 1) NOT NULL ,
 Aid int NULL ,
 mark varchar (50)  NULL ,
 primary key (id),
 foreign key (Aid) references ExA On Delete Cascade On Update Cascade
)
select * from ExB
id          Aid         mark                                              
----------- ----------- --------------------------------------------------
76          4           test1
77          4           test2
78          4           test3
79          4           test4
84          6           test1
85          6           test2
86          6           test3
87          6           test4

ExA.id与ExB.Aid是一对多的关系。

现在要求,当ExB中删除记录时,检查表,若ExA的数据在ExB中没有找到对应的数据,则将ExA.Status设置为0。

触发器如下:
Alter Trigger trTestEx
On ExB
For Delete
As
Declare curDelete cursor for
 select Aid from Deleted group by Aid
Declare @intAid int
Open curDelete
Fetch Next from curDelete Into @intAid
while @@Fetch_Status=0
Begin
 if exists(select * from ExA where id=@intAid)
 Begin
  if not exists(select * from ExB where Aid=@intAid)
   Update ExA set status=0 where id=@intAid
 End
 Fetch Next from curDelete Into @intAid
End
Close curDelete
Deallocate curDelete
Go

Delete From ExB where Aid=4   --支持Delete From ExB where Aid in (4,6) 
结果如下:

select * from ExA
id          status
----------- ------
4           0
6           1
select * from ExB
id          Aid         mark                                              
----------- ----------- --------------------------------------------------
84          6           test1
85          6           test2
86          6           test3
87          6           test4

SQL Server 存储过程和触发器sql语句练习

SQL Server 存储过程和触发器sql语句练习
  • hoho_12
  • hoho_12
  • 2015年12月18日 22:25
  • 1616

sqlserver的触发器练习

触发器的概念:它是由事件驱动的,就像java中的监听,当某个事件发生了,就会做一些工作。 下面直接上干货,创建insert触发器、delete触发器、DDL触发器和如何查看触发器定义 1....
  • a502367897
  • a502367897
  • 2017年07月21日 16:11
  • 103

我的第一个网页

今天学习制作了一个简易的电影网页页面,链接地址链接到优酷、电影天堂等网站。 嘉米电影站点 嘉米电影站...
  • chandoudeyuyi
  • chandoudeyuyi
  • 2015年08月27日 21:58
  • 934

我的第一个mysql触发器

DROP TRIGGER if EXISTS a_insert; create trigger  a_insert after insert on a for each row BEGIN ...
  • wangzhuo14
  • wangzhuo14
  • 2016年12月30日 10:04
  • 70

数据库学习笔记和小练习(10)触发器

触发器是用户定义在关系表上的一类由事件驱动的特殊过程,触发器在被定以后,保存在数据库服务器,任何用户对表的操作,服务器都会自动激活该触发器。 触发器又叫做:事件-条件-动作规则 即事件发生->检查条件...
  • pusude
  • pusude
  • 2016年11月07日 10:39
  • 471

我的第一个微信小程序

1. 前言牛客网第三期编程作业是体验下微信小程序的编写, 由于本菜鸟对前端这块理解并不深入,整起来比较费劲, 突然想到一个idea, 顺手简单实现一下, 基本效果如下: 2. 参考资料很快论坛 官...
  • zhyh1435589631
  • zhyh1435589631
  • 2016年11月13日 16:34
  • 1011

我的第一个 PHP

因为需要了解下 SQL 注入,就使用 PHP 自己写了一个只有一个网页的网站测试下,现在记录下过程。。。 直接使用的 KALI系统 (KALI官网:https://www.kali.org/)。KAL...
  • freeking101
  • freeking101
  • 2017年07月26日 15:56
  • 619

我的第一个的javaWeb程序

我的第一个javaWeb程序是在学习中的一个阶段项目
  • y892379664
  • y892379664
  • 2014年06月04日 21:18
  • 484

运行我的第一个php程序

php的简介什么是php?php是一种超文本的标记语言,或者叫做开源脚本言。它是一种运行在服务器上的程序语言,语法简单,开发速度快,像WordPress博客、facebook社交平台都采用了php的技...
  • a1274624994
  • a1274624994
  • 2017年02月05日 01:51
  • 740

这是我的第一个blog

哈哈 
  • chenfar
  • chenfar
  • 2006年09月01日 22:38
  • 390
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的第一个触发器练习
举报原因:
原因补充:

(最多只允许输入30个字)