Trigger为默认事务

测试环境:sql server 2008 r2

对象:DevList表

目标:确定trigger在数据库中有数据变化时是一次一批一批执行还是,按每条触发执行

测试需求:

DevList的触发器

CREATE TRIGGER dbo.Test

ON  DevList

AFTER insert

AS

BEGIN

SET NOCOUNT ON;

-- Insert statements for trigger here

--修改Table_Test数量+1

update Table_Test set [No]=[No]+1

END

GO

表Table_Test:

CREATE TABLE [dbo].[Table_Test](

[No] [int] NULL

) ON [PRIMARY]

用例:

一、使用insert语句想DevList中插入数据,本次不用事务,不用存储过程,同时执行10条insert语句

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.45','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.46','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.47','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.48','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.49','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.50','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.51','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.52','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.53','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.54','aaaaa','bbbbb','ccccc',0,0)

二、在存储过程中使用10条insert语句,本次不用事务

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:         <Author,,Name>

-- Create date: <Create Date,,>

-- Description:    <Description,,>

-- =============================================

CREATE PROCEDURE dbo.NoTranTest

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.55','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.56','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.57','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.58','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.59','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.60','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.61','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.62','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.63','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.64','aaaaa','bbbbb','ccccc',0,0)

END

GO

三、在存储过程中使用10条insert语句,本次使用事务

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

CREATE PROCEDURE dbo.TranTest

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

---开启事务

begin tran

--错误扑捉机制,看好啦,这里也有的。并且可以嵌套。

begin try

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.75','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.76','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.77','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.78','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.79','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.80','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.81','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.82','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.83','aaaaa','bbbbb','ccccc',0,0)

INSERT INTO [DCMHR].[dbo].[DevList]([ip],[subnet],[gateway],[script],[status],[reccount]) VALUES ('190.10.24.84','aaaaa','bbbbb','ccccc',0,0)

end try

begin catch

--select Error_number() as ErrorNumber,  --错误代码

--       Error_severity() as ErrorSeverity,  --错误严重级别,级别小于try catch 捕获不到

--       Error_state() as ErrorState ,  --错误状态码

--       Error_Procedure() as ErrorProcedure , --出现错误的存储过程或触发器的名称。

--       Error_line() as ErrorLine,  --发生错误的行号

--       Error_message() as ErrorMessage  --错误的具体信息

if(@@trancount>0) --全局变量@@trancount,事务开启此值+1,他用来判断是有开启事务

begin

rollback tran  ---由于出错,这里回滚到开始,

end

end catch

if(@@trancount>0)

begin

commit tran  --如果成功Lives表中,将会有条数据。

end

END

GO

执行测试之前清空DevList表中数据,Table_Test表中第一栏,第一个格设为0

执行情况:

执行用例中一选项,查看Table_Test结果10

执行用例中二选项

Exec NoTranTest

查看Table_Test结果20

执行用例三选项

Exec TranTest

查看Table_Test结果30

trigger中insert动作的测试的更多相关文章

  1. 在Salesforce中避免对Trigger中Update的无限循环操作

    在Salesforce中避免对Trigger中Update的无限循环操作: 处理Trigger的时候会有这么一个场景:在Trigger中想修改该Object的某些字段的值,那么如果们在程序中再用代码的 ...

  2. 在mysql数据库中制作千万级测试表

    在mysql数据库中制作千万级测试表 前言: 最近准备深入的学一下mysql,包括各种引擎的特性.性能优化.分表分库等.为了方便测试性能.分表等工作,就需要先建立一张比较大的数据表.我这里准备先建一张 ...

  3. sql: sybase与oracle中insert into select和select into的用法

    1. sybase与oracle中insert into select和select into的用法 http://wjlvivid.iteye.com/blog/1921679 Sybase 一.首 ...

  4. spring boot:thymeleaf模板中insert/include/replace三种引用fragment方式的区别(spring boot 2.3.3)

    一,thymeleaf模板中insert/include/replace三种引用fragment方式的区别 insert: 把整个fragment(包括fragment的节点tag)插入到当前节点内部 ...

  5. MongoDB中insert方法、update方法、save方法简单对比

    MongoDB中insert方法.update方法.save方法简单对比 1.update方法 该方法用于更新数据,是对文档中的数据进行更新,改变则更新,没改变则不变. 2.insert方法 该方法用 ...

  6. Unity脚本在层级面板中的执行顺序测试3

    断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www. ...

  7. Unity脚本在层级面板中的执行顺序测试4-附加整理

    测试4为一些附加内容,后续的各种tips都加在此. 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html ...

  8. Android中的单位及测试相关概念

    android中的单位: in 英寸 pt 点距 px 像素  dp(dip) 密度无关的像素单位,自适应device屏幕的比例,通常涉及长宽高时采用 sp 与范围无关的像素单位,通常在设置字体大小时 ...

  9. 语法:MySQL中INSERT INTO SELECT的使用(转)

    1. 语法介绍      有三张表a.b.c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段.对于这种情况,可以使用如下的语句来实现: INSERT INTO db1_name (fi ...

随机推荐

  1. 最新的ADT Plugin24.0.2

    下载地址:http://pan.baidu.com/s/1o7OIhWQ 密码:z2it

  2. android 开启本地相册选择图片并返回显示

    .java package com.jerry.crop; import java.io.File; import android.app.Activity; import android.conte ...

  3. logback配置详解4-实例配置

    莫个银行项目中实际引用的logback实例,提供大家参考!!!! [html] view plaincopy <?xml version="1.0" encoding=&qu ...

  4. Oracle 收缩数据文件

    Oracle数据库中当某些大数据表不再需要的时候,我们可以通过以下方式来进行清理: DROP TABLE TBL_TEST PURGE; 但是对应表空间(tablespace)中的磁盘空间并没有得到释 ...

  5. 帆软报表FineReport SQLServer数据库连接失败常见解决方案

    1. 问题描述 帆软报表FineReport客户端连接SQLServer(2000.2005等),常常会出现如下错误:com.microsoft.sqlserver.jdbc.SQLServerExc ...

  6. 【2016-11-7】【坚持学习】【Day22】【Oracle 递归查询】

    直接在oracle 递归查询语句 select * from groups start with id=:DeptId connect by prior superiorid =id 往下找 sele ...

  7. log4j.properties配置详解

    1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ...

  8. 用extract-text-webpack-plugin提取出来的css文件中背景图片url的不正确的问题

    在一个main.js中require一个scss文件,scss文件中用了背景图片,图片url是用的相对路径,用extract-text-webpack-plugin插件提取出的css文件背景图片路径不 ...

  9. 线程私有数据和pthread_once

    #include <stdio.h> #include <pthread.h> pthread_key_t key; pthread_once_t ponce = PTHREA ...

  10. codevs 2928 你缺什么

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 继"你幸福吗"之后,央视又推出了"你缺什么 ...