① 触发器问题
没有用时间触发的触发器。触发器只提供了添加,删除,更新三种触发事件,也就是说,只有当你对数据库表进行添加或者删除或者更新操作的时候才会触发触发器。
按照你写的触发器,实际上的结果是,当你对booking表进行任意删除操作时,判断表里的记录是否达到三天,达到三天则删除该数据。你写的这个触发器的大前提是在该表发生了删除操作,只有发生了删除操作,才执行触发器。
② 有关触发器的问题
这和你定义触发器时使用的“关键字”有关,如果你使用的是:AFTER,那么它将是在你执行完语句后,数据已经变化了,它才执行;
如果是:INSTEAD OF,那么它是在值发生变化之前就执行。
-----------------------------------
after"是引起触发器执行的语句执行后再执行触发器,还是整个存储过程中的语句都执行完后再执行触发器?
它是数据有发生就执行,不管你存储过程有没有执行完。
③ 关于触发器的问题
Z = Q1+Q2’ ; D1 = D2 = Z ;
初态时,Q1=Q2=0; 所以 Z = 1;
CP 上升沿到来时,Q1 触发器动作,Q2 触发器不会动作;
则 Q1=1,Q2=0,---> Z = 1;
CP 下降沿到来时,Q2 触发器动作,Q1 触发器不会动作;
则 Q1=1,Q2=1,---> Z = 1;
显然 Z ≡ 1,那么 D1 = D2 ≡ 1;
所以此后任何脉冲 CP 的到来,两个触发器都不会发生变化;
④ 触发器问题!!!!
你先看看你的触发器是否红叉!红叉表示编译未通过!
然后编译触发器代码,看看能否通过?如果不能通过,根据报错信息去修改!
或者按下面的方式调试:
1.保存触发器代码为*.sql文本文件
2 把触发器删除!
3 编写插入一条记录的sql语句
4 根据3的数据,把触发器代码 改写成可执行的sql语句。
5 写一个测试代码块,包含3,和4的语句,然后执行代码块
6. 根据提示的错误信息,修改5语句。
7. 再次测试,直到运行通过,
8. 根据5的正确代码,添加正确的触发器。
⑤ 基本RS触发器的一些问题
基本RS触发器的逻辑方程为:
约束方程:
根据上述两个式子得到它的四种输入与输出的关系:
1.当R端有效(0),S端无效时(1),则Q=0,Q非=1,触发器置0;
2.当R端无效(1)、S端有效时(0),则Q=1,Q非=0,触发器置1。
RS触发器(10张)
如上所述,当触发器的两个输入端加入不同逻辑电平时,它的两个输出端Q和Q非有两种互补的稳定状态。一般规定触发器Q端的状态作为触发器的状态。通常称触发器处于某种状态,实际是指它的Q端的状态。Q=1、Q非=0时,称触发器处于1态,反之触发器处于0态。S=0,R=1使触发器置1,或称置位。因置位的决定条件是S=0,故称S 端为置1端。R=0,S=1时,使触发器置0,或称复位。
同理,称R端为置0端或复位端。若触发器原来为1态,欲使之变为0态,必须令R端的电平由1变0,S端的电平由0变1。这里所加的输入信号(低电平)称为触发信号,由它们导致的转换过程称为翻转。由于这里的触发信号是电平,因此这种触发器称为电平控制触发器。从功能方面看,它只能在S和R的作用下置0和置1,所以又称为置0置1触发器,或称为置位复位触发器。其逻辑符号如图7.2.1(b)所示。由于置0或置1都是触发信号低电平有效,因此,S端和R端都画有小圆圈。
3.当RS端均无效时,触发器状态保持不变。
触发器保持状态时,输入端都加非有效电平(高电平),需要触发翻转时,要求在某一输入端加一负脉冲,例如在S端加负脉冲使触发器置1,该脉冲信号回到高电平后,触发器仍维持1状态不变,相当于把S端某一时刻的电平信号存储起来,这体现了触发器具有记忆功能。
4.当RS端均有效时,触发器状态不确定。
在此条件下,两个与非门的输出端Q和Q非全为1,在两个输入信号都同时撤去(回到1)后,由于两个与非门的延迟时间无法确定,触发器的状态不能确定是1还是0,因此称这种情况为不定状态,这种情况应当避免。从另外一个角度来说,正因为R端和S端完成置0、置1都是低电平有效,所以二者不能同时为0。
此外,还可以用或非门的输入、输出端交叉连接构成置0、置1触发器,其逻辑图和逻辑符号分别如图7.2.2(a)和7.2.2(b)所示。这种触发器的触发信号是高电平有效,因此在逻辑符号的S端和R端没有小圆圈。
⑥ mysql 触发器中遇到的问题
我想应该是你的sql语句有问题, 我也遇到过,在公司的服务器上测试好了后, 然后放到外面服务器,报出了错误, 后来找到的原因是两个数据的对sql语句的要求不同, 有的数据库会把有些sql语句像 select * from table where id= 不会报错返回的值也是为空, 但有的数据库会直接报出错误,
我不知道是不是这个原因, 祝你尽快解决问题。
⑦ 触发器的问题
触发器输入级是或门,是高电平有效,输入 A = B = 0 时,输出 Y 保持原状态不变。
输入 A = 1,B = 0 时,Y = 1 ,即 A 是置位输入端。
输入 A = 0,B = 1 时,Y = 0,即 B 是复位输入端。
可见 A、B 的功能是相反的,如果同时有效(A=B=1)就是输入逻辑错误,合格的电路设计是不允许出现这种状态。
如果由于外界干扰造成短暂出现 A = B = 1 时,则 Y = 0 。
⑧ 关于sql触发器调试问题
在sql中,触发器是一种特殊类型的存储过程,它不同于sql的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如update、
insert、
delete
这些操作时,sql
server
就会自动执行触发器所定义的sql
语句,从而确保对数据的处理必须符合由这些sql
语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1)强化约束(enforce
restriction)
触发器能够实现比check
语句更为复杂的约束。
(2)跟踪变化(auditing
changes)
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。
(3)级联运行(cascaded
operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4)存储过程的调用(stored
procere
invocation)。
为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在dbms(
数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(insert、
update、
delete)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。
触发器的种类
sql
server
2000
支持两种类型的触发器:after
触发器和instead
of
触发器。其中after
触发器即为sql
server
2000
版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(insert
update
delete)
之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于after
触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder
来完成此任务。
instead
of
触发器表示并不执行其所定义的操作(insert、
update、
delete),而仅是执行触发器本身。既可在表上定义instead
of
触发器,也可以在视图上定义instead
of
触发器,但对同一操作只能定义一个instead
of触发器。
⑨ 关于数据库触发器的问题
1. 利用课本上介绍的几种方法对数据库的完整性进行定义和检验,掌握Constraint,Check等短句的用法;
2. 在SQL Server或者MySQL中练习触发器的使用;
a) 在northwind数据库中建立2个表,cust和order,表定义如下:
表cust
列名 类型及长度 其它
CustomerID char(5) 主键
Custcity Char(24)
Custname Char(64) 非空
CStatus int 客户状态
Cstorage int 库存量
Cdate Date 日期
表order:
列名 类型及长度 其它
Orderid char(5) 主键
OrderNames Char(24) 非空
OStatus int 状态
Orders int 定购量
Odate Date 日期
b) 要求根据以上表完成以下作业:
① 在cust表中建立删除触发器,实现上述2表的级联删除。
② 在order表建立insert触发器,当向order表插入一行,如果cust表中对应记录status值为1,说明处于准备状态不能写入该数据;
③ 在order表上建立一个插入触发器,在添加一个订单时,减少cust表的相应货物的记录的库存量。
④ 在order表上建立一个插入触发器,规定订单日期(Odate)不能手工修改。
⑤ 要求订购的物品一定要在仓库中有的,并且数量足够。
⑥ 在order表上建立一个插入触发器,同时插入多行数据时,要求订购的物品一定要在仓库中有的。
⑦ 查看触发器情况:
1. sp_helptrigger 触发器名
2. sp_helptext 触发器名
3. 设置某一触发器的无效和重新有效
4. 删除触发器 YES