sql server触发器的例子
原文地址:http://www.jbxue.com/db/13345.html
sql server触发器的例子
在sql server数据库中的触发器,需要用到两个逻辑表:
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触发器的例子的更多相关文章
- SQL server触发器中 update insert delete 分别给写个例子被。
SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...
- 喜忧参半的SQL Server触发器
SQL Server触发器在非常有争议的主题.它们能以较低的成本提供便利,但经常被开发人员.DBA误用,导致性能瓶颈或维护性挑战. 本文简要回顾了触发器,并深入讨论了如何有效地使用触发器,以及何时触发 ...
- 15、SQL Server 触发器
SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器 ...
- (转)SQL Server 触发器
SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 ...
- 自己写的sql server触发器练练--高手请您跳过吧
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] ...
- sql server 操作xml例子
sql server 操作xml例子 /* sql xml 入门: --by jinjazz --http://blog.csdn.net/jinjazz 1.xml: 能认识元素.属性和值 2.xp ...
- Reusing dialogs with a dialog pool--一个sql server service broker例子
一个sql server service broker例子 ----------------------------------- USE master GO -------------------- ...
- sql server 触发器详细应用
SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发 ...
- 在Sql Server触发器中判断操作是Insert还是Update还是Delete
在Sql Server触发器中判断操作是Insert还是Update还是Delete DECLARE @IsInsert bit, @IsUpdate bit, @IsDelete ...
随机推荐
- [Node.js] Creating Demo APIs with json-server
json-server makes it extremely easy to setup robust JSON apis to use for demos and proof of concepts ...
- MyEclipse 10官网下载地址以及破解方法
刚刚公布了MyEclipse 10,我如今用的还是6.5的版本号,6.5的版本号是我认为最好用的一个版本号. 我装上了,还没感受到有哪些好用,就是感觉体积庞大,和IBM 的WID一样,是个多面手,啥事 ...
- EasyUI基础入门之Easyloader(载入器)
在了解完easyui的parser(解析器)之后,接下来就是easyloader(简单载入器)的学习了. 什么是EasyLoader 正如其名字一样easyloader的作用是为了动态的载入组件所需的 ...
- careercup-C和C++ 13.4
13.4 深拷贝和浅拷贝有什么区别,如何使用? 解答 浅拷贝并不复制数据,只复制指向数据的指针,因此是多个指针指向同一份数据. 深拷贝会复制原始数据,每个指针指向一份独立的数据.通过下面的代码, 可以 ...
- C#解决微信支付Exception has been thrown by the target of an invocation(调用的目标发生了异常)的问题
今天搭建微信扫码支付环境的时候,一样的配置参数,调用连接提示错误 错误:调用的目标发生了异常 然后跟踪到执行 MD5 md5 = System.Security.Cryptography.MD5.Cr ...
- JS 笔记
如何定义一个函数呢?基本语法如下: function 函数名() { 函数代码; } 说明: 1. function定义函数的关键字. 2. "函数名"你为函数取的名字. ...
- MSBuild编译扩展
新增一个C#工程,用记事本打开工程文件(.csproj结尾),滚动条拉到最后,大家可以看到一段如下的代码,其中<Target Name="BeforeBuild">和& ...
- 关于java实现同步的方法
什么是线程同步? 当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题. 实现同步机制有两个方法: 1. 同步代码 ...
- dedecms获取栏目下的频道列表
可以使用: {dede:channelartlist}标签 使用方法: {dede:channelartlist row='6'} <dl> <dt><a href= ...
- js观察者模式
观察者模式存在观察者和被观察者 被观察者的状态发生改变,通知观察者调用观察者的update方法,观察者的update方法对被观察者的状态进行检测,做出相应的操作 被观察者存在接口attach,deta ...