当前位置:首页 > 开发 > 数据库 > 正文

触发器判断插入、删除和更新操作

发表于: 2014-08-06   作者:wjiaoling136   来源:转载   浏览:
摘要: 测试环境:MS SQL Server 2005 创建触发器的简单语句: CREATE TRIGGER triggerName   ON  tableName AFTER/FOR  INSERT,DELETE,UPDATE AS 其中insert是插入操作,delete是删除操作,update是更新操作,这三个操作是可选的。有时候我们需要根据不同的操作执行不同的方

测试环境:MS SQL Server 2005

创建触发器的简单语句:

CREATE TRIGGER triggerName   ON  tableName AFTER/FOR  INSERT,DELETE,UPDATE AS

其中insert是插入操作,delete是删除操作,update是更新操作,这三个操作是可选的。有时候我们需要根据不同的操作执行不同的方法,这就需要判断当前的操作是insert,update,还是delete。

可以根据触发器维持的两个表的状态来判断:Inserted表和Deleted。这是两个临时表(也可以说是虚拟表),当执行不同的操作时,它们有不同的数据状态:

一、插入操作(INSERT)时:Inserted表有数据,Deleted表无数据 。
二、删除操作(DELETE)时:Inserted表无数据,Deleted表有数据 。
三、更新操作(UPDATE)时:Inserted表有数据(新数据),Deleted表有数据(旧数据) 。

所以判断是否insert可以这样子:

if exists(select * from INSERTED)--如果INSERTED表里面存在数据,那么就是insert了
begin
......
end
--或者
if not exists(select * from DELETED)--如果DELETED表里面不存在数据
begin
......
end 

判断删除:

if exists(select * from DELETED)
begin
--或者
if not exists(select * from INSERTED)
begin
......
end 
判断更新,更新的时候,两个表里面都有数据,所以:
if(select count(*) from DELETED)>0 and (select count(*) from INSERTED)>0--两个表的数据数量都大于0
begin
......
end
--或者
if exists(select * from INSERTED) and  exists(select * from DELETED
begin 
......
上面的 这个更新跟当指定的表一有更新就触发,也可以指定某个字段更新时触发,如:
if update(field)--必须加括号,否则会报错
begin
......
end 
这个begin,end有点类似常用的{},有分支判断还是加上比较好,免得乱的自己都看不懂。

触发器判断插入、删除和更新操作

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
下面是在Android4.0上,利用Sqlite数据库的insert,query,update,delete函数以及execSql,rawQuer
原文链接:http://www.cnblogs.com/lyhabc/p/3776000.html 将多行查询结果插入到表中 语法 INSERT I
早上起来写的一个简单的链表的操作。今天是中秋节,祝大家中秋快乐,阖家团圆! #include<stdio.
最近在看《MongoDB权威指南》,写博客记录一下相关内容~~ 关于安装之类的最基本的就不多说了,从基
拖入一个GridView,绑定个SqlDataSource,开启插入、更新、删除功能 这样GridView就有更新和删除功能
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二
在 概述插入、更新和删除数据 中我们讨论过, GridView 控件提供了内建的更新与删除功能,而 Detail
1. 堆 堆:n个元素序列{k1,k2,...,ki,...,kn},当且仅当满足下列关系时称之为堆: <p class="MsoN
1. 二叉平衡树 二叉排序树查找、插入和删除操作的时间复杂度和树的深度n有关。构建树时,当先后插入
在DB2数据库中创建了存储数据的表之后,需要能够将数据移入或移出表。将数据放入表中最简单的方法是
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号