网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.SQL server 危险存储过程删除与恢.
.SQL SERVER中一些常见性能问题的.
.运营数据存储ODS在数据仓库中的实.
.MSSQLServer2000的排序功能原来这.
.关于Sql server数据库日志满的快.
.SQL Server 7.0数据库的六种数据.
.SQL Server数据库管理员必备的DB.
.SQL server如何定时执行一些脚本.
.sql server 2005中新增加的try c.
.实例讲解数据库备份过程中的常见.
.sa登陆失败 SQL Server错误18456.
.讲解SQL Server的分布式跨服务器.
.SQL Server 2000启动1069错误(由.
.如何在把超过固定长度的文字以"….
.深入探讨数据仓库设计的步骤 禁忌.
.一种简单的表中删除重复行的方法 .
.如何在应用程序中避免死锁问题?.
.用SQL语句生成带有小计合计的数据.
.SQL中HAVING从句的用法.
.初学者必读:精讲SQL中的时间计算.

讲解Microsoft SQL Server的行式触发器

发表日期:2008-7-10


曾经以为SQL SERVER的触发器只能触发单行,也就是说如果一个delete触发器,如果同时删除多行时,只会对第一条记录触发,后来发现了不是人家SQL SERVER不支持,而是偶脑子笨没发现。


其实inserted和deleted两张内部表存放了所有要插入或要删除的记录,可以用cursor逐次访问里面的每条记录,下面是一个示例,该触发器将要删除的记录转移到另一张表中:


第一步,创建这两张表


create table table1([id] int primary key, [value] varchar(100))create table table2([id] int primary key, [value] varchar(100))

第二步,插入测试数据


declare @i intset @i = 1while @i <= 100begin insert into table1([id], [value]) values(@i, cast(@i as varchar)) set @i = @i + 1end

创建table1的delete触发器


create trigger tr_d_table1 on table1 for deleteasbegin declare @id int, @value varchar(100) declare cur_del cursor local forward_only for select [id], [value] from deleted open cur_del fetch next from cur_del into @id, @value while @@fetch_status = 0 begin insert into table2([id], [value]) values(@id, @value) fetch next from cur_del into @id, @value end close cur_del deallocate cur_del end

现在对table1执行delete语句,发现所有被删除的记录都记录在在table2中了

delete from table1

上一篇:SQL Server数据库开发之触发器的实际应用 人气:870
下一篇:用一条SQL实现:一行多个字段数据的最大值 人气:982
浏览全部触发器的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐