免费智能真题库 > 历年试卷 > 数据库系统工程师 > 2018年上半年 数据库系统工程师 上午试卷 综合知识
  第60题      
  知识点:   创建与删除触发器   触发器
  关键词:   触发器        章/节:   数据库标准语言—SQL       

 
以下对触发器的叙述中,不正确的是()。
 
 
  A.  触发器可以传递参数
 
  B.  触发器是SQL语句的集合
 
  C.  用户不能调用触发器
 
  D.  可以通过触发器来强制实现数据的完整性和一致性
 
 
 

  相关试题:触发器          更多>  
 
  第58题    2020年下半年  
   61%
关于触发器, 下面说法中正确的是( )。
  第48题    2014年上半年  
   52%
能实现UNIQUE约束功能的索引是(47);针对复杂的约束,应采用(48)来实现。
  第51题    2022年上半年  
   47%
以下关于触发器的说法中,正确的是()。
   知识点讲解    
   · 创建与删除触发器    · 触发器
 
       创建与删除触发器
        触发器(Trigger)不仅能实现完整性规则,而且能保证一些较复杂业务规则的实施。对于示警或满足特定条件下自动执行某项任务来讲,触发器是非常有用的机制。所谓触发器就是一类由事件驱动的特殊过程,一旦由某个用户定义,任何用户对该触发器指定的数据进行增加、删除或修改操作时,系统将自动激活相应的触发器,在核心层进行集中的完整性控制。
        尽管在SQL-99前,触发器不是SQL标准的一部分,但是以SQL为基础的数据库广泛应用了触发器。但是,由于不同的数据库系统使用各自的触发器语法,以至于产生相互之间不兼容的问题。
                      概述
                      触发器是一种特殊类型的存储过程,它不同于前面介绍过的存储过程,是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。触发器使每个站点在有数据修改时自动强制执行其业务规则,并且可以用于SQL Server约束、默认值和规则的完整性检查。
                      触发器主要有如下三方面的特点:
                      (1)当数据库程序员声明的事件发生时,触发器被激活。事件可以是对某个特定关系的插入insert、删除delete或更新update。
                      (2)当触发器被事件激活时,不是立即执行,而是首先由触发器测试触发条件,若条件不成立,响应该事件的触发器什么事情都不做。
                      (3)如果触发器声明的条件满足,则与该触发器相连的动作由DBMS执行。动作可以阻止事件发生,可以撤销事件。
                      注意:触发器为数据库对象,当创建一个触发器时必须指定:①名称;②在其上定义触发器的表;③触发器将何时激发;④指明触发器执行时应做的动作。其名称必须遵循标识符的命名规则,数据库像存储普通数据那样存储触发器。触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。尽管不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。
                      触发动作实际上是一系列SQL语句,可以有两种方式:
                      (1)对被事件影响的每一行(FOR EACH ROW)——每一元组执行触发过程,称为行级触发器。
                      (2)对整个事件只执行一次触发过程(FOR EACH STATEMENT),称为语句级触发器。该方式是触发器的默认方式。
                      创建触发器
                      对于示警或满足特定条件下自动执行某项任务来讲,触发器是非常有用的机制。其定义包括两个方面:指明触发器的触发事件,指明触发器执行的动作。
                      触发事件包括表中行的插入、删除和修改,即执行INSERT、DELETE、UPDATE语句。在修改操作(UPDATE)中,还可以指定特定的属性或属性组的修改为触发条件。事件的触发还有两个相关的时间:Before和After。Before触发器是在事件发生之前触发,After触发器是在事件发生之后触发。创建触发器语句格式如下:
                      
                      说明:
                      (1)BEFORE:指示DBMS在执行触发语句之前激发触发器。
                      (2)AFTER:指示DBMS在执行触发语句之后激发触发器。
                      (3)DELETE:指明是DELETE触发器,每当一个DELETE语句从表中删除一行时激发触发器。
                      (4)INSERT:指明是INSERT触发器,每当一个INSERT语句向表中插入一行时激发触发器。
                      (5)UPDATE:指明是UPDATE触发器,每当UPDATE语句修改由OF子句指定的列值时,激发触发器。如果忽略OF子句,每当UDPATE语句修改表的任何列值时,DBMS都将激发触发器。
                      (6)REFERENCING<临时视图名>:指定临时视图的别名。在触发器运行过程中,系统会生成两个临时视图,分别存放被更新值(旧值)和更新后的值(新值)。对于行级触发器,默认临时视图名分别是OLD和NEW;对于语句级触发器,默认临时视图名分别是OLD-TABLE和NEW-TABLE。一旦触发器运行结束,临时视图就不在。
                      (7)WHEN<触发条件>:指定触发器的触发条件。当满足触发条件时,DBMS才激发触发器。触发条件中必须包含临时视图名,不包含查询。
                      账户关系模式Account中的属性Account-no表示账号,branch-name表示支行名称,balance表示余额。贷款关系模式Loan中的属性Loan-no表示贷款号,branch-name表示支行名称,amount表示金额。存款关系模式depositor中的属性customer-name表示存款人姓名。SQL-99创建触发器如下所示:
                      
                      例8.29说明:When语句指定一个条件nrow.balance<0。仅对满足条件的元组才会执行余下的触发器;Begin atomic…end子句用来将多行SQL语句集成为一个复合语句,该子句中的两条Insert into语句执行了在borrower和loan关系中建立新的贷款业务;update语句用来将账户余额清零;Referencing old row as子句可以建立一个变量用来存储已经被更新或删除行的旧值。Referencing new row as子句可以被update、Insert语句使用。
                      Referencing old table as或Referencing new table as子句可以用来指向临时表(也称过渡表)来容纳所有被影响的行。无论临时表是语句触发器还是行触发器,它们都不能用before触发器,但是可以用after触发器。
                      触发器事件和动作可以有很多形式,除了update以外还可以是Insert、delete。例如,如果有一个新的用户存款插入时,触发器动作可以给用户发一封欢迎信。显然一个触发器不能直接对数据库之外的事情进行操作,但是它可以在存储待发欢迎信地址的关系中添加一个元组。一个专用进程会检查这个表,打印出要发出的欢迎信。
                      触发器在事件(update、Insert和delete)之前被激发,而不是在事件之后。这种触发器可作为避免非法更新的额外约束。例如,有时用户不允许透支,此时,可以建立一个before触发器在新的余额是负数时回滚事务。
                      更改和删除触发器
                                    更改触发器
                                    使用系统命令ALTER TRIGGER更改指定的触发器的定义,即更改原来由CREATE TRIGGER语句创建的触发器定义。更改触发器定义的语句格式如下:
                                    
                             删除触发器
                             语句格式:DROP TRIGGER<触发器名>[,…n]
                             说明:n表示可以指定多个触发器的占位符。
 
       触发器
        触发器种类很多。按时钟控制方式来分,有电位触发、边沿触发、主-从触发等方式。
        按功能分类,有R-S型、D型、J-K型等功能。同一功能触发器可以由不同触发方式来实现。对使用者来说,在选用触发器时,触发方式是必须考虑的因素。因为相同功能的触发器,若触发方式选用不当,系统达不到预期设计要求。这里将以触发方式为线索,介绍几种常用的触发器。
        (1)电位触发方式触发器。当触发器的同步控制信号E为约定“1”或“0”电平时,触发器接收输入数据,此时输入数据D的任何变化都会在输出Q端得到反映;当E为非约定电平时,触发器状态保持不变。鉴于它接收信息的条件是E出现约定的逻辑电平,故称它为电位触发方式触发器,简称电位触发器。
        电位触发器具有结构简单的优点。在计算机中常用它来组成暂存器。
        (2)边沿触发方式触发器。具有如下所述特点的触发器称为边沿触发方式触发器,简称边沿触发器。触发器是时钟脉冲CP的某一约定跳变(正跳变或负跳变)来到时的输入数据。在CP=1及CP=0期间以及CP非约定跳变到来时,触发器不接收数据。
        常用的正边沿触发器是D触发器,下图给出了它的逻辑图及功能表。
        
        D触发器逻辑图
        下面比较边沿触发器和电位触发器。
        电位触发器在E=1期间来到的数据会立刻被接收。但对于边沿触发器,在CP=1期间来到的数据,必须“延迟”到该CP=1过后的下一个CP边沿来到时才被接收。因此边沿触发器又称延迟型触发器。
        边沿触发器在CP正跳变(对正边沿触发器)以外期间出现在D端的数据和干扰不会被接收,因此有很强的抗数据端干扰的能力而被广泛应用,它除用来组成寄存器外,还可用来组成计数器和移位寄存器等。
        至于电位触发器,只要E为约定电平,数据来到后就可立即被接收,它不需像边沿触发器那样保持到约定控制信号跳变到来才被接收。
        (3)触发器的开关特性。描述触发器的参数很多,其中既有描述传输延迟的参数,也有描述各输入波形宽度要求的参数,还有描述各输入波形之间时间配合要求的参数。如果在使用时不能满足参数的要求,电路就不能正常地工作。
   题号导航      2018年上半年 数据库系统工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第60题    在手机中做本题