英雄本色-雪之狼

IT梦想 梦想IT 超越梦想 曾国藩家书 朱子家训 蓝海战略 三国商学院 百战奇略 三国忠效 软件工程 架构技术 企业管理 商业运作

候忠好ID:ITFLY8
387335次访问,排名130好友1人,关注者7
ITFLY8的文章
原创 213 篇
翻译 0 篇
转载 413 篇
评论 66 篇
英雄本色的公告
ITFLY8 放飞梦想!
移动开发 Java Oracle 迈向高端
商业运作...运筹帷幄...

最近评论
lixianyi08:找了好久 终于解决了!谢谢
muchool:http://svnproxy.muchool.com/ 专门针对软件开发人员量身定做的svn代理下载,无需安装任何svn客户端,轻松而快速的打包下载svn版本控制服务器上的资源,自动剔除版本控制信息,还原开发者的原始项目目录.
muchool:
http://svnproxy.muchool.com/ 专门针对软件开发人员量身定做的svn代理下载,无需安装任何svn客户端,轻松而快速的打包下载svn版本控制服务器上的资源,自动剔除版本控制信息,还原开发者的原始项目目录.
shiyan0634:挺详细~~
woshenjing:这个值怎么取??
文章分类
收藏
相册
漂亮图片
网页模版
MSDN专题
Office SharePoint Server 2007
MVP Blog
CSDN Reader
TerryLee技术专栏(RSS)
基于微软服务器平台产品
Web2.0
Ajax BLOG
Ajax中国
Ajax开发包
Flash开发
八佰搜
XML技术
中国XML论坛
华夏IT站
参考手册
51windows
asp.net 资料收集
CSS教程
HTML 语言教程
JavaScript技术讲座
Windows Mobile 资源
产品公司
技术BLOG
路鑫 Dotnet World (RSS)
Asp.net2.0专栏
Asp.net开发手记
asp技术网
代码基地博客站
向东IT博客
多版本技术
小灰的专栏
张子阳技术文章
成飞宇BLOG
正则表达式
毕加索的马
移动开发
网魂工作室
金色海洋工作室(RSS)
阿赖的个性空间
青州男孩
技术网站
.NET技术站
51CTO
68互联
asp.net 资料收集
Net技术
Net文档
TechNet脚本专家(微软)
Web技术库
华软网
天极Asp.Net专题
天道酬勤Blog
教程在线
漫步资源站
简明 Python 教程
豆豆技术网
软件技术开发网
金麦网络
阿蒙编程之家
教授BLOG
bitfan(数字世界一凡人)新浪BLOG
bitfan(数字世界一凡人)的专栏
开源项目
开源项目
控件工具
Asp制作工具
慧都控件网
其他链接
疯狂的程序员
软件工程
软件工程专家网
软件管理
商业Blog
巧克力宝瓶
生活思考
个人的管理
刘润博客
网页模版
中国站长在线
网页特效
JS(javascript)脚本收藏大全
最酷网页特效
网络学院
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 SQL Server 2000 程序设计学习笔记--第九章 触发器收藏

新一篇: SQL Server 2000 程序设计学习笔记--第十章 创建视图 | 旧一篇: SQL Server 2000 程序设计学习笔记--第八章 存储过程BCP公用程序及SQL脚本

9.1何谓触发器
SQL Server2000提供了两种数据完整性的主要机制:条件约束及触

发器
触发程序以及包含在触发程序内的语句都可以视为一个事务,因此

在事务过程中如果遇到严重的错误时,会自动地复原整个事务

9.2设计触发程序及激活触发程序的时间

设计触发程序时,SQL Server 2000提供两种选项来创建触发程序:
INSTEAD OF触发程序是用来代替正常的触发操作
AFTER 触发程序会在执行INSERT UPDATE或DELETE语句的操作之后
才执行,但是AFTER触发程序只能针对表来操作

指定激活除法程序的时间

使用触发程序的限制

注意:创建除法程序时,触发并不是以行为基础,而是以集合为基础

,因此多行的更改是合法的

触发程序所使用的特殊表格
两个供触发程序使用的表格:inserted和deleted
虽然提供这两个特殊表格供用户浏览,但是用户却无法直接改变表

格中的数据

inserted及deleted表格的用途
inserted表格会用来存储执行insert及update语句之后所影响的行

内容
deleted表格会存储因执行delete和update语句而受到影响的行内容

范例
--创建一个名称为test_tr的触发器,当执行添加,更新或删除时
--都可以激活此触发程序
Create trigger test_tr on titles_copy for

insert,update,delete
as
select * from inserted
select * from deleted
go
--修改price的字段值为10当进行update语句时,将会触发test_tr
--触发程序,并且会显示inserted及deleted表格内容
update titles_copy set price=10 where type like '%cook%'
--将创建的test_tr触发程序删除
drop trigger test_tr
go
程序名称:EX-1.SQL

创建多行的触发器

insert 语句它一次只能添加一笔记录至表格内,而update及delete

语句则可以处理多笔数据
如果要添加多笔记录时可以使用insert into(table_name) select

语句来激活insert触发程序,因此插入许多行时只可能激活单一的

触发程序
范例
--执行多行的insert语句
create trigger intrig
on sales
after insert as
update titles set ytd_sales=ytd_salses-qty from inserted

where titles.title_id=inserted.title_id
程序名称:EX-4.SQL

9.3创建触发器

create trigger建立触发程序

注意在触发器内是不可以接受任何参数,也不需要设置return数值

,因为触发器是自动被执行的

范例
--创建一个触发程序
create trigger new_trigger on authors for update
as
print '数据已更新'
go
update authors set state='CA' where AU_ID='238.95.7766'
go
程序名称:EX-5.SQL

删除触发程序

范例
--创建一个触发程序
create trigger new_trigger on authors for update
as
print '数据已更新'
go
update authors set state='CA' where AU_ID='238.95.7766'
go
--删除触发程序
drop trigger new_trigger
go
程序名称:EX-6.SQL

如果进行查看触发程序的相关信息

sp_helptrigger

范例
--创建一个触发程序
create trigger new_trigger on authors for update
as
print '数据已更新'
go
update authors set state='CA' where AU_ID='238.95.7766'
go
--显示触发程序的相关信息
sp_helptrigger 'authors'
go

查看触发程序的拥有者及创建日期的数据

范例
--创建一个new_trigger触发程序
create trigger new_trigger on authors for update
as
print '数据已更新'
go
update authors set state='CA' where AU_ID='238.95.7766'
go
--显示触发程序的相关信息
sp_help 'new_trigger'
go

查看触发程序的内容
sp_helptext '触发程序名称'

范例
sp_helptext 'new_trigger'
go

使用ROLLBACK TRANSACTION的触发程序

在执行ROLLBACK TRANSACTION语句时并不会返回任何消息给用户,

因此在存储过程或触发程序中需要警告信息时,可使用RAISERROR或

PRINT语句来进行提示。

范例
--创建一个触发程序
create trigger new_trigger on authors for update
as
if @@rowcount=0
begin
print '数据无法更新'
rollback transaction
end
go
update authors set state='CA' where au_id='238-95-7765'
go
程序名称:EX-10.SQL

@@ROWCOUNT是用来返回受到上一个语句所影响行的数目

范例
--当au_id='427-17-2320'时,则进行更新
--若没有任何数据被更新时,则显示信息
update authors set au_lname='Jones' where au_id='472-17-

2320'
if @@rowcount=0
print '没有任何数据更新'
程序名称:EX-2.SQL

递归触发

所提供的递归触发程序只能调用到32层

检查目前数据库的递归触发功能是否打开
EXEC sp_dboption pubs,'recursive trigger'
sp_dboption 所设置的值是只有针对目前所在数据库有效

将目前数据库的递归触发打开
EXEC sp_dboption pubs,'recursive triggers',true

将打开的递归触发功能关闭时
exec sp_dboption pubs,'recursive triggers',false

范例
--将递归触发功能打开
exec sp_dboption pubs,'recursive triggers',true
go
create table test_db (ID int IDENTITY)
GO
create trigger test_trigger on test_db for insert
as
insert test_db default values
go
insert test_db default values
go
--将递归触发功能关闭
exec sp_dboption pubs,'recursive triggers',false
go
程序名称:EX-3.SQL


9.4一对多关系型表格的更新和删除

利用deleted和inserted表

发表于 @ 2006年03月02日 09:26:00|评论(loading...)|编辑

新一篇: SQL Server 2000 程序设计学习笔记--第十章 创建视图 | 旧一篇: SQL Server 2000 程序设计学习笔记--第八章 存储过程BCP公用程序及SQL脚本

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 英雄本色