1. 什么是Inserted 和Deleted表
  2. 他们有什么用
  3. trigger 的简单实用

1.什么是Inserted 和Deleted表

当插入数据的时候,其实是同时向目的表 和inserted表中插入数据,当没有出错时,向数据库中插入提交,inserted表中有刚插入的信息,

  insert into student ([name],defaltage) output inserted.IDs values('{0}',{1}) 这里输出 刚插入的ids

  如果出错,就不向数据库中插入了 rollback

 这同时也就说明了 为啥identity 标示当出错的时候,identity不回滚,因为identity列 执行了插入了 identity 增长了

 Deleted 也是同样,当删除时,其实是把数据放到Deleted表中,如果删除过程中没有出错,就删除deleted表 ,如果出错,就不删除,把数据重新放到表里

2.他们的用处 一般就是用来看看删除和插入的信息

3.Trigger简单用法

 --TblClass 中有Id classname classdes
--创建一个和TblClass表结构一模一样的表
select top * into TblClassBackup from TblClass select * from TblClassBackup --创建一个删除触发器
--当TblClass删除数据的时候,都插入备份表中
create trigger tri_delete_tblclass on TblClass
after delete
as
begin
insert into TblClassBackup(tClassName,tClassdesc)
select tClassName,tClassDesc from deleted
end

delete from TblClass where tClassName='高二一班'
select * from TblClassBackup

会发现,刚才删除的数据,在备份表中

插入触发器同理

  

SQL中Inserted 和Deleted表 以及触发Trigger的更多相关文章

  1. SQL中查看数据库各表的大小

    SQL中查看数据库各表的大小 编写人:CC阿爸 2014-6-17 在日常SQL数据库的操作中,如何快速的查询数据库中各表中数据的大小. 以下有两种方法供参考: 第一种: create table # ...

  2. SQL中使用关键词创建表或字段

    有时候我们给表或者字段命名时,会无意中选择了一个SQL中的关键字进行命名,然后就报错了: ERROR:  syntax error at or near "limit" MySQL ...

  3. Sql中如何将数据表的两个字段的值如何互换?

    今天遇到一个数据表的两个列数据要互换,在网上找到并记录下. 直接用Sql就可以搞定,语法如下 --将数据表中两个列数据互换的语法-- update tabName set field1=field2, ...

  4. 书写 sql 中关于 update 多表联合更新的方法

    SQL Update多表联合更新的方法(1) sqlite 多表更新方法//----------------------------------update t1 set col1=t2.col1fr ...

  5. MS SQL 中判断 数据库, 存储过程,表,临时表,视图,函数,用户,用户创建对象 等是否存在 SQL脚本

    摘自: http://www.111cn.net/database/mssqlserver/39107.htm sql判断存储过程是否存在 判断数据库教程是否存在 Sql代码 if exists (s ...

  6. 使用JSQLParser解析SQL中涉及到的表

    首先添加Maven依赖: <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId& ...

  7. SQL 中不同类型的表连接

    http://www.linuxidc.com/Linux/2012-08/68035.htm 1.简介 在关系型数据库中,join操作是将不同的表中的数据联合在一起时非常通用的一种做法.首先让我们看 ...

  8. Sql中判断"数据库"、"表"、"临时表"、"存储过程"和列"是否存在

    --判断数据库是否存在 IF EXISTS (SELECT * FROM MASTER..sysdatabases WHERE NAME = '库名')    PRINT 'exists ' else ...

  9. SQL中合并两个表的JOIN语句

    SQL里有四种JOIN语句用于根据某条件合并两个表: (INNER) JOIN: 交集 LEFT (OUTER) JOIN: 左表数据全包括,右表对应的如果没有就是NULL RIGHT (OUTER) ...

随机推荐

  1. day03_07 变量的重新赋值01

    在cmd中退出python,需要使用quit()命令 name = "Alex Li" name2 = name print(name,name2) name = "Ja ...

  2. 【转】hibernate映射(单向双向的一对多、多对一以及一对一、多对一)

    多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一 一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多 也就是说一对多和多对一的映射策略是一样的,只是站 ...

  3. 读懂diff(转载)

    作者: 阮一峰 日期: 2012年8月29日 diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前 ...

  4. 【Luogu】P1411树(树形高精DP)

    题目链接 我貌似又做了一道高精题呢(笑) 这题的DP方程很好想,设f[i][j]表示i为根的子树,i所在联通块大小为j的最大值,然后乱搞 但是要高精,那么搞是得要高精除的 所以考虑f[i][j]是除以 ...

  5. ACM程序设计选修课——1076汇编语言(重定向+模拟)

    1076: 汇编语言 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 34  Solved: 4 [Submit][Status][Web Board] ...

  6. poj3311Hie with the Pie

    Hie with the Pie Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7599   Accepted: 4088 ...

  7. Process类,Thread类,Pool类,gevent类,ProcessPoolExecutor,ThreadPoolExecutor的用法比较

    一 Process类 multiprocessing模块下的一个类 创建子进程. 有两种方法 方法一 from multiprocessing import Process import os def ...

  8. 主机ping不通虚拟机,但是虚拟机能ping通主机

    一.虚拟机网络连接方式选择Nat 二. 关闭Linux防火墙命令:service iptables stop / service firewalld stop 查看Linux防火墙状态命令:servi ...

  9. 解决使用webbrowser请求url时数据传递丢失问题

    问题: 使用“ this.webBrowser.Url = new Uri(webBrowserUrl);”方式请求Action(Java Web)并传递数据,在webBrowserUrl中携带的参数 ...

  10. Cython 一篇通

    Cython的类型 1 类型定义 1.1 定义一个C变量: 1.1.1 在Cython里定义一个C变量和C语言类似,不同的地方就是在声明的最前面要加上cdef,另外,末尾不用加分号";“如: ...