Sqlserver技术知识点之二十.复习课程-2023修改整理_第1页
Sqlserver技术知识点之二十.复习课程-2023修改整理_第2页
Sqlserver技术知识点之二十.复习课程-2023修改整理_第3页
Sqlserver技术知识点之二十.复习课程-2023修改整理_第4页
Sqlserver技术知识点之二十.复习课程-2023修改整理_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

千里之行,始于足下让知识带有温度。第第2页/共2页精品文档推荐Sqlserver技术知识点之二十.复习课程Sqlserver技术学问点之二十

系统存储过程就是系统创建的存储过程,目的在于能够便利地从系统表中查询信息或完成与更新数据库表相关的管理任务或其它的系统管理任务。系统过程以“sp_"_为开始,在Master数据库中创建并保存在该数据库中,为数据库管理者全部。一些系统过程只能由系统管理员使用,而有些系统过程通过授权可以被其它用户所使用。

系统存储过程主要包括以下几类:(这里主要给出每类系统过程中常常使用的系统过程)

在上面几节我们介绍了普通意义的存储过程,即用户自定义的存储过程和系统存储过程。本节将介绍一种特别的存储过程,即触发器。在余下各节中我们将对触发器的概念、作用以及对其的使用办法作详尽介绍,使读者了解如何定义触发器,创建和使用各种不同复杂程度的触发器。

12.5.1触发器的概念及作用

触发器是一种特别类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过大事举行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表举行诸如UPDATE、INSERT、DELETE这些操作时,SQLServer就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必需符合由这些SQL语句所定义的规章。

触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的全都性。除此之外,触发器还有其它许多不同的功能:

(1)强化约束(Enforcerestriction)

触发器能够实现比CHECK语句更为复杂的约束。

(2)跟踪变化Auditingchanges

触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。

(3)级联运行(Cascadedoperation)。

触发器可以侦测数据库内的操作,并自动地级联影响囫囵数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。

(4)存储过程的调用(Storedprocedureinvocation)。

为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS(数据库管理系统)本身之外举行操作。

由此可见,触发器可以解决高级形式的业务规章或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并按照这种差异执行一定的处理。此外一个表的同一类型(INSERT、UPDATE、DELETE)的多个触发器能够对同一种数据操作实行多种不同的处理。

总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时光花费在参照其它表的这一处理上,由于这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置打算了操作要花费的时光长短。

12.5.2触发器的种类

SQLServer2000支持两种类型的触发器:AFTER触发器和INSTEADOF触发器。其中AFTER触发器即为SQLServer2000版本以前所介绍的触发器。该类型触发器要求惟独执行某一操作(INSERTUPDATEDELETE)之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder来完成此任务。

INSTEADOF触发器表示并不执行其所定义的操作(INSERT、UPDATE、DELETE),而仅是执行触发器本身。既可在表上定义INSTEADOF触发器,也可以在视图上定义INSTEADOF触发器,但对同一操作只能定义一个INSTEADOF触发器。

上面介绍了有关触发器的概念、作用和一些基本问题,下面我们将分离介绍在MSSQLServer中如何用SQLServer管理工具EnterpriseManager和Transaction_SQL来创建触发器。

在创建触发器以前必需考虑到以下几个方面:

?CREATETRIGGER语句必需是批处理的第一个语句;

?表的全部者具有创建触发器的缺省权限,表的全部者不能把该权限传给其它用户;

?触发器是数据库对象,所以其命名必需符合命名规章;

?尽管在触发器的SQL语句中可以参照其它数据库中的对象,但是,触发器只能创建在当前数据库中;

?虽然触发器可以参照视图或暂时表,但不能在视图或暂时表上创建触发器,而只能在基表或在创建视图的表上创建触发器;

?一个触发器只能对应一个表,这是由触发器的机制打算的;

?尽管TRUNCATETABLE语句犹如没有WHERE从句的DELETE语句,但是因为TRUNCATETABLE语句

没有被记入日志,所以该语句不能触发DELETE型触发器;

?WRITETEXT语句不能触发INSERT或UPDATE型的触发器。

当创建一个触发器时,必需指定触发器的名字,在哪一个表上定义触发器,激活触发器的修改语句,如INSERT、DELETE、UPDATE。固然两个或三个不同的修改语句也可以都触发同一个触发器,如INSERT和UPDATE语句都能激活同一个触发器。

12.6.1用管理工具EnterpriseManger创建触发器

其操作步骤如下:

1.启动EnterpriseManger,登录到指定的服务器上。

2.绽开数据库,然后绽开要在其上创建触发器的表所在的数据库,然后单击该表。

3.右击鼠标,在弹出菜单中挑选ALLTasks,然后单击ManageTriggers…。

4.在名字框中挑选new,在文本框中输入触发器文本,如图12-5所示。

5.单击CheckSyntax检查语句是否

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论