发布:thebaby   来源:脚本学堂     【  
本文介绍下,在sql server数据库中使用触发器的简单例子,有需要的朋友可以参考下,希望对你有一定的帮助。

原文地址:http://www.jbxue.com/db/13345.html

本节内容:

sql server触发器的例子

在sql server数据库中的触发器,需要用到两个逻辑表:
deleted 操作所变更的旧记录集
inserted 操作所产生的新记录集。

其中:

执行INSERT操作后deleted逻辑表为空,inserted逻辑表有数据;
执行DELETE操作后inserted逻辑表为空,deleted逻辑表有数据;
执行UPDATE操作后两个逻辑表都有数据,deleted为旧记录集,inserted为新记录集。
 

以上操作变更几条记录,逻辑表就会产生几条记录,多条记录可以在触发器中用游标处理。

例子:

复制代码代码示例:

--//sql server触发器的例子
CREATE TRIGGER qf_trigger
   ON  User_table
   for INSERT,DELETE,UPDATE
AS
BEGIN
    declare @userid varchar(20)

--保存旧值
    declare rs cursor for
        select userid from deleted
    open rs
    fetch next from rs into @userid
    while @@fetch_status=0
    begin
        if update(用户名)
            insert into old_users(userid) values (@userid)
        fetch next from rs into @userid
    end
    close rs
    deallocate rs

--保存新值
    declare rs cursor for
        select userid from inserted
    open rs
    fetch next from rs into @userid
    while @@fetch_status=0
    begin
        if update(用户名)
        begin
            if(@userid='admin')
            begin
                raiserror('此用户名禁用!',10,1) with nowait
                rollback
                return
            end -- www.jbxue.com
            insert into new_users(userid) values (@userid)
        end
        fetch next from rs into @userid
    end
    close rs
    deallocate rs
END

说明:
在用INSERT、DELETE、UPDATE更新表时,如果触发器执行的操作失败,对表的操作也会回滚,并提示触发器程序产生错误的位置与原因。

sql server触发器的例子的更多相关文章

  1. SQL server触发器中 update insert delete 分别给写个例子被。

    SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...

  2. 喜忧参半的SQL Server触发器

    SQL Server触发器在非常有争议的主题.它们能以较低的成本提供便利,但经常被开发人员.DBA误用,导致性能瓶颈或维护性挑战. 本文简要回顾了触发器,并深入讨论了如何有效地使用触发器,以及何时触发 ...

  3. 15、SQL Server 触发器

    SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器 ...

  4. (转)SQL Server 触发器

    SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 ...

  5. 自己写的sql server触发器练练--高手请您跳过吧

    set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] ...

  6. sql server 操作xml例子

    sql server 操作xml例子 /* sql xml 入门: --by jinjazz --http://blog.csdn.net/jinjazz 1.xml: 能认识元素.属性和值 2.xp ...

  7. Reusing dialogs with a dialog pool--一个sql server service broker例子

    一个sql server service broker例子 ----------------------------------- USE master GO -------------------- ...

  8. sql server 触发器详细应用

    SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用.  Ø 什么是触发 ...

  9. 在Sql Server触发器中判断操作是Insert还是Update还是Delete

    在Sql Server触发器中判断操作是Insert还是Update还是Delete DECLARE    @IsInsert bit,    @IsUpdate bit,    @IsDelete  ...

随机推荐

  1. linux tomca几个配置文件及点

    --------------------推荐----配置2---------------------<Connector port="8081"executor=" ...

  2. 安装完zend server后,无法访问http://localhost:10081/ZendServer/的解决办法

    安装完ZendServer后,默认会设置http://localhost:10081/ZendServer/为ZendServer的后台管理页面, 但对于ZendServer5.0.2(其它版本未知) ...

  3. android128 zhihuibeijing 科大讯飞 语音识别

    - 科大讯飞 开放平台 http://open.voicecloud.cn/ package com.itheima.voicedemo; import android.app.Activity; i ...

  4. PHP代码实现MySQL读写分离

    关于MySQL的读写分离有几种方法:中间件,Mysql驱动层,代码控制 关于中间件和Mysql驱动层实现Mysql读写分离的方法,今天暂不做研究, 这里主要写一点简单的代码来实现由PHP代码控制MyS ...

  5. oracle学习总结1

    1:解锁用户alter user 用户名 account unlock; 2:获取系统时间.随机数select sysdate, sys_guid() from dual; 3:起别名,使可读性更强, ...

  6. java基础常识

    现在总结一些经常接触到的java名词 一:java技术分类 javase:java standard editor:java标准版,主要定义java经常使用的API(Application Progr ...

  7. HP服务器RAID配置

    公司服务器硬盘空间不够了(HP的服务器),购买了10块硬盘,由于之前没有做过RAID,感觉很高大上的样子,就请教了HP的技术人员,技术人员发了两份文档,分别是DL380G7(DL580G7)和DL38 ...

  8. JAVA8永久代

    在Java虚拟机(以下简称JVM)中,类包含其对应的元数据,比如类的层级信息,方法数据和方法信息(如字节码,栈和变量大小),运行时常量池,已确定的符号引用和虚方法表. 在过去(当自定义类加载器使用不普 ...

  9. 昨天冲动的搬到外面住了,oh yeah

    昨天我纠结了一天,我是否应该搬到外面去住.我骑着我的自行车,在外面闲逛,我心里想的是,我现在没有钱,可以节约一些生活费,租房的日子,我以后始终都是需要面对的,在目前没有那么多钱的情况下,可以不出去外面 ...

  10. yii下使用oracle中文都变成问号乱码的解决方法

    在配置文件中,一般会用以下配置: 'db_oracle'=>array( 'class' => 'CDbConnection', 'connectionString'=>'oci:d ...