基于SQLServer2008的DML触发器设计实例分析
- 格式:pdf
- 大小:227.83 KB
- 文档页数:5
SQLServerinsert的触发器SQL Server insert的触发器⼀张表a根据⼀列(唯⼀键或主键)a1当插⼊数据时判断该列a1的开头的字符是否为:'0150'若是则更新该表a的a2列为:'-10'a表CREATE TABLE a(a1 nvarchar(50) NULL,a2 int NULL)select * from atruncate table a该触发器⼀次只能插⼊⼀⾏create trigger tri_insert_aon aafter insertasbeginif (select a.a1 from a, insertedwhere a.a1 = inserted.a1 and a.a1) like '0150%'beginupdate a set a2='-10'from a, insertedwhere a.a1 = inserted.a1and a.a1 like '0150%'endenddrop trigger tri_insert_a⼀次插⼊多⾏create trigger tri_insert_aon aafter insertasbeginif exists(select a.a1 from a, insertedwhere a.a1 = inserted.a1 and a.a1 like '0150%')beginupdate a set a2='-10'from a, insertedwhere a.a1 = inserted.a1and a.a1 like '0150%'endenddrop trigger tri_insert_aselect * from a修改触发器alter trigger tri_insert_aon aafter insertasbeginif exists(select a.a1 from a, insertedwhere a.a1 = inserted.a1 and a.a1like '0150%')beginupdate a set a2='-10'from a, insertedwhere a.a1 = inserted.a1and a.a1 like '0150%'endend创建触发器语法create trigger trigger_nameon {table_name|view_name}{After|Instead of} {insert|update|delete}as 相应T-SQL语句其中关于触发器有时会遇到for替代after的情况,for 和 after 没有区别。
Oracle数据库之PLSQL触发器Oracle数据库之PL/SQL触发器1. 介绍触发器(trigger)是提供给程序员和数据分析员来保证数据完整性的⼀种⽅法,它是与表事件相关的特殊的存储过程,它的执⾏不是由程序调⽤,也不是⼿⼯启动,⽽是由事件来触发,⽐如当对⼀个表进⾏操作(insert,delete,update)时就会激活它执⾏。
触发器经常⽤于加强数据的完整性约束和业务规则等。
触发器有三种类型,分别是:DML触发器、替代触发器和系统触发器。
DML触发器顾名思义,DML触发器是由DML语句触发的。
例如数据库的INSERT、UPDATE、DELETE操作都可以触发该类型的触发器。
它们可以在这些语句之前或之后触发,或者在⾏级上触发(就是说对于每个受影响的⾏都触发⼀次)。
替代触发器替代触发器只能使⽤在视图上,与DML不同的是,DML触发器是运⾏在DML之外的,⽽替代触发器是代替激发它的DML语句运⾏。
替代触发器是⾏触发器。
系统触发器这种触发器是发⽣在如数据库启动或关闭等系统事件时,不是在执⾏DML语句时发⽣,当然也可以在DDL时触发。
触发器功能强⼤,轻松可靠地实现许多复杂的功能,但是我们也应该慎⽤。
为什么⼜要慎⽤呢?触发器本⾝没有过错,但如果我们滥⽤,会造成数据库及应⽤程序的维护困难。
在数据库操作中,我们可以通过关系、触发器、存储过程、应⽤程序等来实现数据操作,同时约束、缺省值也是保证数据完整性的重要保障。
如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程度。
2. 触发器组成触发器主要由以下⼏个要素组成:1. 触发事件:引起触发器被触发的事件。
2. 触发时间:触发器是在触发事件发⽣之前(BEFORE)还是之后(AFTER)触发,也就是触发事件和该触发器的操作顺序。
3. 触发操作:触发器被触发之后的⽬的和意图,是触发器本⾝要做的事情。
4. 触发对象:包括表、视图、模式、数据库。
一、存储过程1. 创建存储过程,使用Employees表中的员工人数来初始化一个局部变量,并调用这个存储过程。
CREATE PROCEDURE TEST@NUMBER1INT OUTPUTASBEGINDECLARE@NUMBER2INTSET@NUMBER2=(SELECT COUNT(*)FROM Employees)SET@NUMBER1=@NUMBER2END执行该存储过程,查看结果。
DECLARE@num INTEXEC TEST@num OUTPUTSELECT@num2. 创建存储过程,比较两个员工的实际收入,若前者比后者高就输出1,否则就输出0。
CREATE PROCEDURE COMPA@ID1char(6),@ID2char(6),@BJ int OUTPUTASBEGINDECLARE@SR1float,@SR2floatSET@SR1=(SELECT InCome-OutCome FROM Salary WHERE EmployeeID=@ID1) SET@SR2=(SELECT InCome-OutCome FROM Salary WHERE EmployeeID=@ID2) IF@SR1>@SR2SET@BJ=1ELSESET@BJ=0END执行该存储过程,查看结果。
DECLARE@BJ intEXEC COMPA'504209','302566',@BJ OUTPUTSELECT@BJ3. 创建添加职员记录的存储过程EmployeeAdd。
CREATE PROCEDURE EmployeeADD(@employeeid char(6),@name char(10),@education char(4),@birthday datetime,@workyear tinyint,@sex bit,@address char(40),@phonenumber char(12), @departmentID char(3))ASBEGININSERT INTO EmployeesVALUES(@employeeid,@name,@education,@birthday,@workyear,@sex,@address,@phonenumber,@departmentID)ENDRETURNGO执行该存储过程。
SQL Server 2008简介1. 介绍SQL Server 2008SQL Server 2008是微软公司推出的一款关系型数据库管理系统(RDBMS),它是SQL Server系列产品的第十一个版本。
SQL Server 2008于2008年8月6日发布,作为SQL Server 2005的后续版本,它引入了许多新的功能和改进,使得数据库管理更加高效和可靠。
2. 主要功能SQL Server 2008提供了一系列强大的功能,包括但不限于以下几点:- 数据安全: SQL Server 2008支持角色和权限管理、数据加密和审计功能,确保了数据库的安全性。
- 高可用性: SQL Server 2008通过数据库镜像、数据库复制和故障转移裙集等功能,确保了数据库的高可用性。
- 数据管理: SQL Server 2008提供了丰富的存储过程、触发器和索引等功能,帮助用户高效管理和优化数据。
- 商业智能: SQL Server 2008提供了报表服务、集成服务和分析服务等商业智能工具,方便用户进行数据分析和决策支持。
3. 应用领域SQL Server 2008在各个领域都有广泛的应用,主要包括但不限于以下几点:- 企业级应用: SQL Server 2008被广泛应用于企业级的管理系统、CRM系统和数据仓库等。
- 网络应用: SQL Server 2008可用于支持各种网络应用的数据存储和管理,包括电子商务全球信息站、社交网络和上线游戏等。
- 移动应用: SQL Server 2008还可用于支持移动应用的后台数据管理,包括移动办公、移动支付和位置服务等。
4. 版本差异SQL Server 2008共有多个版本,主要包括但不限于以下几个版本:- Express: 免费版本,适用于小型应用和开发者使用。
- Standard: 标准版,提供了基本的数据库管理功能,适用于中小型企业。
- Enterprise: 企业版,提供了丰富的高级功能和性能优化,适用于大型企业和关键业务应用。
【数据挖掘】SQL Server 2008Analysis Services入门教程2012-11-29 00:14 697人阅读评论(0) 收藏举报一. 创建Analysis Services项目∙单击“开始”,依此指向“所有程序”和Microsoft SQL Server 2008,再单击SQL Server Business Intelligence Development Studio。
将打开Microsoft Visual Studio 开发环境∙在Visual Studio 的“文件”菜单上,指向“新建”,然后单击“项目”。
∙在“新建项目”对话框中,从“项目类型”窗格中选择“商业智能项目”,再在“模板”窗格中选择“Analysis Services项目”∙将项目名称更改为Analysis Services Tutorial,这也将更改解决方案名称,然后单击“确定”。
您已经基于Analysis Services项目模板,在同样命名为Analysis Services Tutorial的新解决方案中成功创建了AnalysisServices Tutorial项目。
二、定义数据源∙在解决方案资源管理器中,右键单击“数据源”,然后单击“新建数据源”。
∙在“欢迎使用数据源向导”页上,单击“下一步”可打开“选择如何定义连接”页。
∙∙在“选择如何定义连接”页上,可以基于新连接、现有连接或以前定义的数据源对象来定义数据源。
在本教程中,将基于新连接定义数据源。
确保已选中“基于现有连接或新连接创建数据源”,再单击“新建”。
∙在“连接管理器”对话框中,为数据源定义连接属性。
在“提供程序”列表中,确保已选中“本机OLE DB\SQL Server Native Client 10.0”。
Analysis Services还支持“提供程序”列表中显示的其他访问接口。
∙在“服务器名称”文本框中,键入localhost。
DML触发器DML触发器就是普通的INSERT / UPDATE / DELETE 触发器。
DDL触发器就是一些特有的DDL 语句的触发器。
例如:登陆到服务器的触发,创建数据库的触发。
DML 触发器是当数据库服务器中发生数据操作语言(DML) 事件时要执行的操作。
DML 事件包括对表或视图发出的UPDATE、INSERT 或DELETE 语句。
DML 触发器用于在数据被修改时强制执行业务规则,以及扩展Microsoft SQL Server 约束、默认值和规则的完整性检查逻辑。
MicrosoftSQL Server 提供两种主要机制来强制使用业务规则和数据完整性:约束和触发器。
触发器为特殊类型的存储过程,可在执行语言事件时自动生效。
SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。
当服务器或数据库中发生数据定义语言(DDL) 事件时将调用DDL 触发器。
有关详细说明,请参阅DDL 触发器。
登录触发器将为响应LOGON 事件而激发存储过程。
与SQL Server 实例建立用户会话时将引发此事件。
有关详细信息,请参阅登录触发器。
当数据库中发生数据操作语言(DML) 事件时将调用DML 触发器。
DML 事件包括在指定表或视图中修改数据的INSERT 语句、UPDATE 语句或DELETE 语句。
DML 触发器可以查询其他表,还可以包含复杂的Transact-SQL 语句。
将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。
如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。
DML 触发器在以下方面非常有用:DML 触发器可通过数据库中的相关表实现级联更改。
不过,通过级联引用完整性约束可以更有效地进行这些更改。
DML 触发器可以防止恶意或错误的INSERT、UPDATE 以及DELETE 操作,并强制执行比CHECK 约束定义的限制更为复杂的其他限制。