网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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 经典语句.
.快速清除SQLServer日志的两种方法.
.打开UDP端口1434以浏览命名实例.
.设计数据库之经验谈.
.SQL Server 2008升级顾问.
.如何取得一个表的所有字段名用逗.
.删除数据库中重复数据的几个方法.
.标准SQL规范中定义的四个事务隔离.
.分页存储过程.
.MS SQL Server中的CONVERT日期格.
.循序渐进讲解Informix SQL的十一.
.深入浅出SQL教程之Group by和Hav.
.实例讲解如何让多进程多线程访问.
.SQL Server 2005密码安全追踪与存.
.轻松掌握密码有效性验证失败的处.
.通过作业调度建立SQL Server的自.
.SQL Server 2008实现高可用性.
.在SQL Server 2005中实现异步触发.
.SQL语句导入导出大全.
.SQL Server 2005 Reporting Serv.

SQL SERVER的行式触发器

发表日期:2007-5-30


曾经以为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 日志满的处理方法 人气:4005
下一篇:Vista下安装SQL Server 2005,附加数据库报错 人气:4745
浏览全部SQL SERVER的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐