触发器实现多表之间的增加、删除及更新

摘要:
1createtrigger触发器名称2onA表3afterdelete4asbegindeleteB表5whereB表主键in6end实例测试:删除Info_Stu中的一条记录时,删除Info_Borrow中相同的记录1createtriggertriDelete_Stu2Borrow2onInfo_Stu3afterdelete4asbegindeleteInfo_Borrow5whereNamein6end测试效果如下:3.数据同步更新如有两张表:A表和B表,创建触发器使当A表数据更新后B表也同步更新数据。注意deleted与inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。

注:本文参考http://blog.sina.com.cn/s/blog_a0912d340101gxhb.html

常见的触发器有三种:分别应用于Insert,Update,Delete事件。

1.数据同步增加

如有两张表:A表和B表,创建触发器使当A表插入数据后B表也同步插入数据。其中B表插入数据的字段需要同A表中的字段相对应。

1 create trigger触发器名称
2 onA表
3 after insert
4 as 
5 begin insert intoB表(B表字段1,B表字段2,B表字段3)
6 selectA表字段1,A表字段2,A表字段3
7 frominserted
8 end

实例测试:

实现若Info_Stu有新的数据插入,则将数据的Name提取出,同步到Info_Borrow表

1 create triggertriCopy_Stu2Borrow
2 onInfo_Stu
3 after insert
4 as 
5 begin insert intoInfo_Borrow(Name) 
6 select Name fromInfo_Stu
7 end

测试效果如下:

触发器实现多表之间的增加、删除及更新第1张

2.数据同步删除

如有两张表:A表和B表,创建触发器使当A表删除数据后B表也能同步删除数据。其中B表与A表应有相应主键关联。

1 create trigger触发器名称
2 onA表
3 after delete
4 as begin deleteB表
5 where B表主键 inselect A表主键 fromdeleted)
6 end

实例测试:

删除Info_Stu中的一条记录时,删除Info_Borrow中相同的记录

1 create triggertriDelete_Stu2Borrow
2 onInfo_Stu
3 after delete
4 as begin deleteInfo_Borrow
5 where Name in (select Name fromdeleted)
6 end

测试效果如下:

触发器实现多表之间的增加、删除及更新第2张

3.数据同步更新

如有两张表:A表和B表,创建触发器使当A表数据更新后B表也同步更新数据。

1 create trigger触发器名称
2 onA表
3 after update
4 as begin
5 updateB表
6 set
7 B.B表字段1=i.字段1
8 from 
9 B表  B, deleted d,inserted i
10 WHERE B.B表字段=d.字段

测试效果如下:

1 create triggertriUpdate_Stu2Borrow
2 onInfo_Stu
3 after update
4 as
5 begin update Info_Borrow set Name=i.Name
6    from Info_Borrow as br,deleted d, inserted asi
7    where br.Name=d.Name
8 end

触发器实现多表之间的增加、删除及更新第3张

注:数据更新的操作涉及到了临时表的建立:

理解触发器里面的两个临时的表:deleted,inserted。注意deleted与inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。

一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:

虚拟表inserted虚拟表deleted
在表记录新增时存放新增的记录不存储记录
修改时存放用来更新的新纪录存放更新前的记录
删除时不存储记录存放被删除的记录

免责声明:文章转载自《触发器实现多表之间的增加、删除及更新》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS H5容器的一些探究(一):UIWebView和WKWebView的比较和选择manjaro 最新搜狗输入法安装教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Adobe Edge Animate 1.0 概述

AdobeEdgeAnimate1.0概述 版权声明:本文版权属于 北京联友天下科技发展有限公司。转载的时候请注明版权和原文地址。 一、主界面 从主界面我们可以直接进入: 1.工程操作(ProjectCommands):打开之前保存的工程(OpenFile...)或者新建一个工程(CreateNew...); 2.从最近使用文件列表中(RecentFil...

EBS_FORM开发之触发器

FORM触发器执行顺序:1.当打开FORM时: 1) PRE-FORM 2) PRE-BLOCK(BLOCK级) 3) WHEN-NEW-FORM-INSTANCE 4) WHEN-NEW-BLOCK-INSTANCE 5) WHEN-NEW-RECORD-INSTANCE 6) WHEN-NEW-ITEM-INSTANCE 2.当填写一行记录...

[代码]JAVA触发器,Spring的quartz配置

Spring的quartz中的配置代码,spring-quartz.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/...

Net Core2.0 基于QuartzNet任务管理系统

Net Core2.0 基于QuartzNet任务管理系统Quartz.NET官网地址:https://www.quartz-scheduler.net/ Quartz.NET文档地址:https://www.quartz-scheduler.net/documentation/index.html Quartz.NET是一个开源的作业调度框架,是Open...

(转)菜鸟学数据库(二)——触发器

本人水平有限,写此博客只为给那些像我一样的菜鸟一点小小的帮助,还请各位大牛不要见笑。 数据库的重要性就不用我多说了吧,我们做的大多数项目都要跟数据库打交道。因此,熟练掌握数据库的各种操作,就成了一个程序员必备的技能。今天我们就来简单说一下触发器。 这篇文章只是对触发器的理论总结,要想彻底了解触发器,参考SqlServer基础之(触发器)(清晰易懂) 触发器...

数据库触发器inserted和deleted详解

create trigger updateDeleteTimeon userfor updateasbegin  update user set UpdateTime=(getdate()) from user inner join inserted on user.UID=Inserted.UIDend 上面的例子是在执行更新操作的时候同时更新,...