Sqlserver技术知识点_第1页
Sqlserver技术知识点_第2页
Sqlserver技术知识点_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、技术知识点之二十系统存储过程就是系统创建的存储过程,目的在于能够方便地从系统 表中查询信息或完成与更新数据库表相关的管理任务或其它的系统 管理任务。系统过程以“为开头,在 数据库中创建并保存在该数据库中,为数据库管理者所有。一些系统过程只能由系统管理员使用, 而有些系统过程通过授权可以被其它用户所使用。系统存储过程主要包括以下几类:(这里主要给出每类系统过程中经 常使用的系统过程)5p_c 0 li imn_privi1e2£-> sp_01iimn5 sp_daiaba<essp_Serer_info 1*1*存储过程sp_sp fcia I_co1nnin5 p_sp

2、TOC_c o lumns sp_statistics sp_ tore d_proe edure s gp.口bt 亡ki kges sp_iable、paddcli stpub li mher spsdddisnibutor 、p-htlp_d gtiirjTofik sp _he lp_pub lie a (lcmac cessip_heLpanicle、pddpvUbub script ion a ge n t p .adds>iibs cup Pionip_addart icleipalddiutioiKlbp_a dclp nb li canonsp a cldp lib l

3、i c ati u_napshot sp_atl(Lpu.blishef70 p_a clclpnl 侶 ub'cnp ti onp helpdis rp ubli slier sp_ i dd ubcrib e isp_lielpdisif ibutioadb sp_t>elpdi$tributor sp helpp ull s ub script ten sp_he lijreplic a ri ondbopti on sp_be lpsub scnp non sp_cha n g edis (rib u( o “鹘 oxd iprefreshsub crtptions 化

4、dropdi itpubhsh e i 5p_dropis-tnbutor $p_droppu 1 hi ib$ ert p no n 爱全管理类存傭过程、p_addsiub s ctiVer_ s the dule sp _liclt>publication scribers-p _c h an eecli stpubli shef5 p_cliange d istribiit londb$ p_liiJi_publicat lo n sp_dropia.rticLeb pdropdi Fnb u?i ordL $p_<koppub-licat;cjispaddalias sp_

5、a detap prole ip_3ddgroupsp_a Minke dsn-! ogi n sp_ add. Io gin ip_3tldi«uioielogL.sp_aldrolesp_addServerp_a dclsTVTO lemci nber$p_(kopfole*p dropr o lerwember s.p_dropSener$p_ drop fYioleiiK niber p_dropuser fi-p-graitilbacce$p_gran(loiiisp helpd.bfi.xe<lroles.p_ln*lps;roup$p _heLp li tik e

6、drv loginsp_sddui5p_iippro lepa 舒门 ord sp_change_user5_lo g in spe hangedbown « s-p_chsng;egroup chaug:e obje ciowner sp_helpsrTole sp_helpsnToleme mber $p_defau rhn.su a ac 科j_den 列 ©gm ”P-drp白li住弓s.pspbclpotgroupsp r h边p rtmoTelo eui iphdproLe ip_helprcleniembeT s p_ db fiziediol eperun

7、sloii sp_<lefaul(db sp _ dropr emote 1 ogin sp_lielpuser >p_piissword p_reiiiotetpTionsp drop group sp_di:0p linkedsnrlo gin. 分布式妥询存储辻程sp revokeloginsp_di oplogincldL itikedS e sp 3 ddl inkedsr/102 msp_ibreignkeysspiiidexes fsp 1 mke d Senders sp_pnmnryrkeyt.征以石的章节中,我們会便用或讲解诂此存笳I仏在上面几节我们介绍了一般意

8、义的存储过程, 即用户自定义的存储过 程和系统存储过程。本节将介绍一种特殊的存储过程,即触发器。在 余下各节中我们将对触发器的概念、作用以及对其的使用方法作详尽 介绍,使读者了解如何定义触发器,创建和使用各种不同复杂程度的 触发器。触发器的概念及作用触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的 存储过程。触发器主要是通过事件进行触发而被执行的, 而存储过程 可以通过存储过程名字而被直接调用。当对某一表进行诸如、这些操作时,就会自动执行触发器所定义的 语句,从而确保对数据的处理必须符合由这些 语句所定义的规则。触发器的主要作用就是其能够实现由主键和外键所不能保证的复 杂的参照完整性和

9、数据的一致性。除此之外,触发器还有其它许多不 同的功能:(1)强化约束()触发器能够实现比 语句更为复杂的约束。(2)跟踪变化触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指 定更新和变化。(3)级联运行()。触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各 项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。(4) 存储过程的调用()。为了响应数据库更新触,发器可以调用一个或多个存储过程, 甚至可 以通过外部过程的调用而在(数据库管理系统)本身之外进行操作。由此可见,触发器可以解决高级形式的业务规则或复杂

10、行为限制 以及实现定制记录等一些方面的问题。 例如,触发器能够找出某一表 在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。 此外一个表的同一类型(、)的多个触发器能够对同一种数据操 作采取多种不同的处理。总体而言,触发器性能通常比较低。当运行触发器时,系统处理 的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。 可见 触发器所参照的其它表的位置决定了操作要花费的时间长短。触发器的种类2000支持两种类型的触发器:触发器和 触发器。其中 触发器即为 2000版本以前所介绍的触发器。该类型触发器要求只有 执行某一操作()

11、之后,触发器才被触发,且只能在表上定义。 可以为针对表的同一操作定义多个触发器。对于触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程 来完成此任务。触发器表示并不执行其所定义的操作(、 、),而仅是执行触 发器本身。既可在表上定义 触发器,也可以在视图上定义 触发器, 但对同一操作只能定义一个 触发器。上面介绍了有关触发器的概念、 作用和一些基本问题,下面我们将分 别介绍在 中如何用 管理工具 和来创建触发器。在创建触发器以前必须考虑到以下几个方面:? 语句必须是批处理的第一个语句;?表的所有者具有创建触发器的缺省权限,表的所有者不能把该权限传给其它用户;?触发器是数

12、据库对象,所以其命名必须符合命名规则;?尽管在触发器的 语句中可以参照其它数据库中的对象,但是,触发器只能创建在当前数据库中;?虽然触发器可以参照视图或临时表,但不能在视图或临时表上创建触发器,而只能在基表或在创建视图的表上创建触发器;? 一个触发器只能对应一个表,这是由触发器的机制决定的;? 尽管 语句如同没有 从句的 语句,但是由于 语句没有被记入 日志,所以该语句不能触发 型触发器;? 语句不能触发 或 型的触发器。当创建一个触发器时, 必须指定触发器的名字, 在哪一个表上定义触 发器,激活触发 器的修改语句,如、 、 。 当然两个或三个不同的 修改语句也可 以都触发同一个触发器,如 和

13、 语句都能激活同一个 触发器。12.6.1 用管理工具 创建触发器其操作步骤如下:1. 启动 , 登录到指定的服务器上。2. 展开数据库,然后展开要在其上创建触发器的表所在的数据库, 然后单击该表。3. 右击鼠标,在弹出菜单中选择,然后单击 。4. 在名字框中选择, 在文本框中输入触发器文本,如图 12-5 所 示。5. 单击 检查语句是否正确。6. 单击, 在 下拉列表中会有新创建的触发器名字。7. 单击,关闭窗口创建成功1262用命令创建触发器其语法覘则如卜CREATE TRIGGER n'iggfriiAmeON table | view HHTH EC R'ITIIO

14、TOR | AFTEK IX5TE AD OF DELETE J f INSERT UPDATE | VmH APPENDNOT FOR REPLICATION ASu < TORI AFTER INSTE.W OF > INSERT J VPDATE WITHAPPEXDNOT TOR REPLICATION |ASIF UPDATE ( cahimn )(AND | OR LPBATE ( column > »】| IF ( COLUMNS_LPDAIED <) bind 評 _叩饲玳 x updated_bitinas.k ) r oinp a i i5

15、on_o per a f oij coliiinu biTmask ri 1sql_£tatem»nl 町各参数的说明如下:?是用户要创建的触发器的名字触发器的名字,必须符合的命名规则,且其名字在当前数据库中必须是惟一的。?是与用户创建的触发器相关联的表的名字, 并且该表已经存在。?表示对包含有文本的表进行加密。?表示只有在执行了指定的操作(、)之后触发器才被激活, 执行触发器中的语句。若使用关键字, 则表示为触发器,且 该类型触发器仅能在表上创建。?请参看“12.8 触发器”? , , 关键字用来指明哪种数据操作将激活触发器。至少要指明一个 选项,在触发器的定义中三者的顺

16、序不受限制,且各选项要用 逗号隔开。?表明增加另外一个已存在某一类型触发器。只有在兼容性水平 (指某一数据库行为与以前版本的 兼容程度)不大于 65 时 才使用该选项。?表明当复制处理修改与触发器相关联的表时,触发器不能被执行。?是触发器将要执行的动作。?是包含在触发器中的条件语句或处理语句。触发器的条件语句 定义了另外的标准来决定将被执行的、 、语句是否激活触发 器。? () 用来测定对某一确定列是插入操作还是更新操作,但不与删除 操作用在一起。()仅在 和类型的触发器中使用,用其来检查所涉及的列是被更新还是被插入。是在比较中使用的位逻辑运算符。是那些被更新或插入的列的整形位掩码。例如,如果

17、表 T包括 C1, C2, C3, C4, C5五列。为了确定是否只有C2列被修 改,可用2来做位掩码,如果想确定是否C1,C2,C3, C4都 被修改,可用14来做位掩码。是一比较操作符用“二表示检查在 中定义的所有列是否都被更 新,用“>”表示检查是否在 中定义的某些列被更新。指那些被检查是否被更新的列的位掩码。M 12: £卜inies哀上创建 个ffiA.更新类型丽谢这个触发器的名称沟 创建触发器的语句如卜I;r-eate kisser Lrz dion titlesfor deler&.updateremm从以上的介绍中我们可以看出触发器具有强大的功能,那么是

18、如何管理触发器来完成这些任务呢?下面我们将对其工作原理及实现 做较为详细的介绍每个触发器有两个特殊的表:插入表和删除表。这两个表是逻辑 表,并且这两个表是由系统管理的,存储在内存中,不是存储在数据 库中,因此不允许用户直接对其修改。这两个表的结构总是与被该触 发器作用的表有相同的表结构。这两个表是动态驻留在内存中的,当 触发器工作完成,这两个表也被删除。这两个表主要保存因用户操作 而被影响到的原数据值或新数据值。另外,这两个表是只读的,即用 户不能向这两个表写入内容,但可以引用表中的数据。例如可用如下 语句查看表中的信息:F面详细介绍这两个表的功能:插入表的功能对一个定义了插入类型触发器的表来讲,一旦对该表执行了插入 操作,那么对向该表插入的所有行来说,都有一个相应的副本存放到 插入表中。即插入表就是用来存储向原表插入的内容。删除表的功能对一个定义了删除类型触发器的表来讲,一旦对该表执行了删除 操作,则将所有的删除行存放至删除表中。这样做的目的是,一旦触 发器遇到了强迫它中止的语句被执行时,

温馨提示

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

评论

0/150

提交评论