- 黑桃花
-
触发器是数据库中由一个时间触发的特殊的存储过程,他不是由程序条用也不是手工启动的。触发器的执行可以由对一个表的insert,delete, update等操作来触发,触发器经常用于加强数据的完整性约束和业务规则等等。 触发器可以对其他表进行查询,也可以包含复杂的SQL语句。他么主要用于强制服从复杂的业务规则或者要求。例如可以利用触发器根据客户当前的帐户状态来控制是否允许插入新的订单。 触发器也可以用于强制引用完整性,以便在多个表中添加,删除或者更新数据时,保留这些表之间的关系。 创建触发器的SQL语法: DELIMITER | CREATE TRIGGER `<databaseName`.`<triggerName` < [ BEFORE | AFTER ] < [ INSERT | UPDATE | DELETE ]ON <tableName
相关推荐
触发器的作用?
触发器是可以跟踪间户对数据库的操作,实现复杂的非标准的数据库的完整性规则,能够同步实时的复制表中的数据及自动计算数据值等2023-07-06 14:39:425
触发器的作用是什么?
有延时,存储的作用2023-07-06 14:40:103
数据库中触发器的作用是什么?
触发器是数据库提供给程序员和数据分析员来保证数据完整性的一种机制,它是一种与数据表事件相关的特殊的存储过程。触发器的执行不是由程序调用,也不需要手工开启,而是由数据表上的事件来触发,当用户对一个数据表进行增、删、改操作时就会激活它执行。触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。触发器功能强大,可以轻松可靠地实现许多复杂的功能,但也不能过于依赖触发器,滥用触发器会造成关系数据库及应用程序维护困难,性能、效率低下等问题的产生,在实际问题中,要根据实际需要选择合适的解决方案。触发器是一种特殊的存储过程,在插入、删除、修改特定表中的数据时触发执行,拥有比数据库本身更强大的数据控制能力,其作用有以下四大方面。1.数据安全数据安全主要是指对信息系统中的业务数据提供一种数据变更的审核机制,当其通过安全策略的审核后,允许用户变更相关数据,否则直接拒绝数据变更的请求。安全原理:基于数据库的值使用户具有操作数据库的某种权利。((1)可以基于时间限制用户的操作。例如,不允许下班后和节假日修改数据库数据。(2)可以基于数据库中的数据限制用户的操作。例如,不允许股票价格的升幅一次超过10%。2.数据审计数据审计主要是指对数据服务器上的记录进行变更时的一种用户权限的即时审查与用户行为的全方位记录,以便事后对数据变更过程的追溯,保证数据变更的合法性。审计原理:跟踪用户对数据库的操作。((1)审计用户操作数据库的语句。(2)把用户对数据库的更新写入审计表。3.数据约束数据约束是指对用户的操作行为将导致业务数据与实际情况相悖的行为进行检查约束,而不让其发生,从而保证数据的完整性与一致性。约束原理:对用户操作与实际逻辑的约束检查。((1)实现数据完整性检查和约束。例如,回退任何企图买进超过自己资金的货物。(2)提供可变的缺省值。4.数据连环更新数据连环更新是指当对数据进行更新操作时,将所有与此数据相关联的数据作联合的更新操作,以保证数据的完整性与一致性。连环更新原理:对关联数据作联合更新操作。((1)修改或删除时级联修改或删除其他表中与之匹配的行。(2)修改或删除时把其他表中与之匹配的行设成NULL值。(3)修改或删除时把其他表中与之匹配的行级联设成缺省值。2023-07-06 14:40:241
汽车音响触发器的作用
1、触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。2、强化约束触发器能够实现比CHECK 语句更为复杂的约束。3、跟踪变化触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。4、级联运行触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。5、存储过程的调用为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、 UPDATE、 DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。2023-07-06 14:40:332
基本RS触发器有什么作用
基本RS触发器具有置位、复位和保持(记忆)的功能。RS触发器一般用来抵抗开关的抖动。为了消除开关的接触抖动,可在机械开关与被驱动电路间接的接入一个基本RS触发器,如图1所示838电子。S"=0, R"=l,可得出A=l, A‘=0。当按压按键时,S"=l,R"=0,可得出 A=0,A"=1,改变了输出信号A的状态。若由于机械开关的接触抖动,则R的状态会在0和1之间变化多次,若 R=l,由于A=0,因此G2门仍然是“有低出高”,不会影响输出的状态。同理,当松开按键时, S端出现的接触抖动亦不会影响输出的状态。因此,图1所示的电路,开关每按压一次,A点的输出信号仅发生一次变化。扩展资料四种输入与输出的关系:1、S"=0,R"=1:无论触发器原来处于何种状态,由于S=1,则Q=1,Q非=0,触发器处于“1”态(或称置位状态)。触发器的状态是由S所决定的,称S为直接置位端。2、S"=1,R"=0:无论触发器原来处于何种状态,由于R=1,则Q=0,Q非=1,触发器处于“0”态(或称复位状态)。触发器的状态是由R所决定的,称R为直接复位端。3、S"=1,R"=1:触发器维持原来状态不变。4、S"=0,R"=0:此时无法确定触发器的状态。一般这是不允许的,因此触发器的输入端S、R不能同时为1。参考资料来源:百度百科-RS触发器2023-07-06 14:40:421
什么是触发器?起到什么作用?
触发器是事件编辑器的精髓所在,游戏中多样的任务、不同的事件、胜利/失败的条件、天气的变化等等这些全部都是触发器的功劳。 触发器由三个部分组成,事件、条件、动作。 事件:或称为触发事件,顾名思义,就是当某个事件发生的时候就运行触发器。 条件:判断是否达到指定的条件,如果没有达到条件将不执行动作。可以留空,表示直接执行动作。一般来说,条件越多越容易出错,所以尽量只使用一两个条件。 动作:条件通过后所要做的事情。 我用个简单例子来说明,比如一个英雄进入地区后游戏胜利,那么就要这样设置。 事件:一个单位进入地区条件:判断单位是一个英雄为Turn动作:游戏胜利。 在每个新建地图中都会有个叫做初始化的类,其中有个叫做对战初始化的触发器,它设定了每张地图默认的初始设置,其中包括:Use melee time of day (for all players) - 启用默认的游戏中开始时间。Limits Heros to 1 per Hero-type (for all players) - 限制玩家同一种英雄只能生产一名。Hero trained Heroes a Scroll of Town Portal (for all players) - 给英雄一个传送卷轴。Set starting resources (for all players) - 设置起始资源,给每个玩家分配一开始拥有的资源。Remove creeps and critters from used start locations (for all players) - 移除开始点附近的野生单位、障碍物等。Create starting units (for all players) - 在开始点上创建玩家开始对战游戏需要的主基地和工人Run melee AI scripts - 让所有计算机玩家执行对战游戏人工智能。Enforce victory/defeat conditions - 使用默认的胜利失败条件,所有建筑物被破坏即失败。 如果不需要,删除掉它们就可以了,事实上大部分RPG地图都不需要这些条件。 触发器的所有指令都是英文的,不过没关系,我专门为此制作了一个中英对照表,并在其中做了简要说明。请参阅附录:触发器中英对照表。 除此之外,触发器中还有很多函数,例如:"Last Created Unit",最后创建的单位。合理运用这些函数也是非常重要的,在触发器的使用中将会大量使用到这些函数。 触发器的使用是千变万化的,本章我介绍一些常见的例子,希望你能够举一反三,了解触发器的使用。 注意:类可以用中文命名,注释也可以用中文命名,但触发器不能用中文命名!2023-07-06 14:41:041
什么是触发器,使用触发器的好处是什么
触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由个事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。 触发器可以查询其他表,而且可以包含复杂的 SQL 语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。 触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。 创建触发器的SQL语法 DELIMITER | CREATE TRIGGER `<databaseName>`.`<triggerName>` < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] > ON <tableName> FOR EACH ROW BEGIN --do something END | 触发器的优点 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。 比较触发器与约束 约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性 (RI) 则应通过 FOREIGN KEY 约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。 例如:除非 REFERENCES 子句定义了级联引用操作,否则 FOREIGN KEY 约束只能以与另一列中的值完全匹配的值来验证列值。 CHECK 约束只能根据逻辑表达式或同一表中的另一列来验证列值。如果应用程序要求根据另一个表中的列验证列值,则必须使用触发器。 约束只能通过标准的系统错误信息传递错误信息。如果应用程序要求使用(或能从中获益)自定义信息和较为复杂的错误处理,则必须使用触发器。 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。 触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。当更改外键且新值与主键不匹配时,此类触发器就可能发生作用。例如,可以在 titleauthor.title_id 上创建一个插入触发器,使它在新值与 titles.title_id 中的某个值不匹配时回滚一个插入。不过,通常使用 FOREIGN KEY 来达到这个目的。 如果触发器表上存在约束,则在 INSTEAD OF 触发器执行后但在 AFTER 触发器执行前检查这些约束。如果约束破坏,则回滚 INSTEAD OF 触发器操作并且不执行 AFTER 触发器。 触发器到底可不可以在视图上创建 在 SQL Server64 联机丛书中,是没有说触发器不能在视图上创建的, 并且在语法解释中表明: 在 CREATE TRIGGER 的 ON 之后可以是视图。 然而,事实似乎并不是如此,很多专家也说触发器不能在视图上创建。我也专门作了测试,的确如此,不管是普通视图还是索引视图,都无法在上面创建触发器,真的是这样吗?请点击详细,但是无可厚非的是:当在临时表或系统表上创建触发器时会遭到拒绝。 深刻理解 FOR CREATE TRIGGER 语句的 FOR 关键字之后可以跟 INSERT、UPDATE、DELETE 中的一个或多个,也就是说在其它情况下是不会触发触发器的, 包括 SELECT、TRUNCATE、WRITETEXT、UPDATETEXT。相关内容 一个有趣的应用我们看到许多注册系统在注册后都不能更改用户名,但这多半是由应用程序决定的, 如果直接打开数据库表进行更改,同样可以更改其用户名, 在触发器中利用回滚就可以巧妙地实现无法更改用户名……详细内容 触发器内部语句出错时…… 这种情况下,前面对数据更改操作将会无效。举个例子,在表中插入数据时触发触发器,而触发器内部此时发生了运行时错误,那么将返回一个错误值,并且拒绝刚才的数据插入。不能在触发器中使用的语句 触发器中可以使用大多数 T-SQL 语句,但如下一些语句是不能在触发器中使用的。 CREATE 语句,如:CREATE DATABASE、CREATE TABLE、CREATE INDEX 等。 ALTER 语句,如:ALTER DATABASE、ALTER TABLE、ALTER INDEX 等。 DROP 语句,如:DROP DATABASE、DROP TABLE、DROP INDEX 等。 DISK 语句,如:DISK INIT、DISK RESIZE。 LOAD 语句,如:LOAD DATABASE、LOAD LOG。 RESTORE 语句,如:RESTORE DATABASE、RESTORE LOG。 RECONFIGURE TRUNCATE TABLE 语句在sybase的触发器中不可使用! 慎用触发器 触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用呢。触发器本身没有过错,但由于我们的滥用会造成数据库及应用程序的维护困难。在数据库操作中,我们可以通过关系、触发器、存储过程、应用程序等来实现数据操作…… 同时规则、约束、缺省值也是保证数据完整性的重要保障。如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程序. 编辑本段|回到顶部数字电路领域名词 学名“双稳态多谐振荡器(Bistable Multivibrator)”。触发器(Flip Flop)是一种可以存储电路状态的电子元件。最简单的是由两个或非门,两个输入端和两个输出端组成的RS触发器(见图)。复杂一些的有带时钟(CLK)段和D(Data)端,在CLK端为高电平时跟随D端状态,而在CLK端变为低电平的瞬间锁存信号的D触发器。更常用的是两个简单D触发器级联而成的在时钟下跳沿所存信号的边缘D触发器,广泛应用于计数器、运算器、存储器等电子部件。 触发器的类型: 按逻辑功能不同分为:RS触发器、D触发器、JK触发器、T触发器。 按触发方式不同分为:电平触发器、边沿触发器和主从触发器。 按电路结构不同分为:基本RS触发器和钟控触发器。 按存储数据原理不同分为:静态触发器和动态触发器。 按构成触发器的基本器件不同分为:双极型触发器和MOS型触发器。 照明配件 用于高强度气体放电灯(H.I.D)的启动,型号繁多.由于高强度气体放电灯启动时需要一个高电压来使气体电离进入等离子态,因而需要一个高压发生器做为启动器。这就是触发器早期的机械型触发器已经淘汰。现在绝大多数触发器都是使用可控硅或高压触发二极管的电子触发器,常用的型号有:OSRAM 的 CD-7 飞利浦的 SI51 SN58 爱伦的ALK400等2023-07-06 14:41:131
数据库触发器的作用
触发器 触发器的定义就是说某个条件成立的时候,你触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。然后,触发器的触发条件其实在你定义的时候就已经设定好的了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。具体举例:1. 在一个表中定义的语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。这个就是删除表的操作就是触发器执行的条件了。2. 在一个表中定义了行级的触发器,那当这个表中一行数据发生变化的时候,比如删除了一行记录,那触发器也会被自动执行了。触发器简介:触发器是一种特殊类型的过程。与普通过程不同的是,过程需要用户显式地调用才执行,而触发器则是当某些事件发生时,由Oracle自动执行。触发器主要由如下几个部分组成:触发事件:触发条件:触发对象:触发操作:编写触发器时,需要注意以下几点:触发器不接受参数。一个表上最多可以有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。还需要注意,各个触发器之间不能有矛盾。在一个表上的触发器越多,对在该表上的DML操作性能影响就越大。触发器最大为32KB。如果确实需要,可以先建立过程,然后在触发器中用CALL语句调用。在DML触发器中只能使用DML语句(select,insert,update,delete)。在系统触发器中只能包含DDL语句(create,alter,drop)。触发器中不能包含事务控制语句(commit,rollback,savepoint)。因为触发器是触发语句的一部门,触发语句被提交或回退时,触发器也就被提交或回退了。在触发器主体中调用的任何过程、函数都不能使用事务控制语句。在触发器主体中不能声明任何long和blob变量。新值new、旧值old也不能指向表中的任何long和blog列不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法格式和作用都有较大区别。2023-07-06 14:41:401
施密特触发器有什么具体作用?
施密特触发器作用是两个临界电压且形成一个滞后区,可以防止在滞后范围内之噪声干扰电路的正常工作。如遥控接收线路,传感器输入电路都会用到它整形。施密特触发器也有两个稳定状态,但与一般触发器不同的是,施密特触发器采用电位触发方式,其状态由输入信号电位维持;对于负向递减和正向递增两种不同变化方向的输入信号,施密特触发器有不同的阀值电压。门电路有一个阈值电压,当输入电压从低电平上升到阈值电压或从高电平下降到阈值电压时电路的状态将发生变化。施密特触发器是一种特殊的门电路,与普通的门电路不同,施密特触发器有两个阈值电压,分别称为正向阈值电压和负向阈值电压。在输入信号从低电平上升到高电平的过程中使电路状态发生变化的输入电压称为正向阈值电压,在输入信号从高电平下降到低电平的过程中使电路状态发生变化的输入电压称为负向阈值电压。正向阈值电压与负向阈值电压之差称为回差电压。扩展资料利用施密特触发器状态转换过程中的正反馈作用,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。输入的信号只要幅度大于vt+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。当输入电压由低向高增加,到达V+时,输出电压发生突变,而输入电压Vi由高变低,到达V-,输出电压发生突变,因而出现输出电压变化滞后的现象,可以看出对于要求一定延迟启动的电路,它是特别适用的。从传感器得到的矩形脉冲经传输后往往发生波形畸变。当传输线上的电容较大时,波形的上升沿将明显变坏;当传输线较长,而且接受端的阻抗与传输线的阻抗不匹配时,在波形的上升沿和下降沿将产生振荡现象。当其他脉冲信号通过导线间的分布电容或公共电源线叠加到矩形脉冲信号时,信号上将出现附加的噪声。无论出现上述的那一种情况,都可以通过用施密特反相触发器整形而得到比较理想的矩形脉冲波形。只要施密特触发器的vt+和vt-设置得合适,均能受到满意的整形效果。参考资料来源:百度百科-施密特触发器2023-07-06 14:41:492
什么是触发器
触发器的作用触发器有如下作用:可在写入数据表前,强制检验或转换数据。[1]触发器发生错误时,异动的结果会被撤销。部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。可依照特定的情况,替换异动的指令 (INSTEAD OF)。触发器分类SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。(在逻辑电路中根据逻辑功能不同,可分为RS触发器,D触发器,同步触发器等)[1]DML触发器当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。DDL触发器它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。器登录触发器登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。SQL语法DELIMITER |[1]CREATE TRIGGER `<databaseName>`.`<triggerName>`< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >ON [dbo]<tableName> //dbo代表该表的所有者FOR EACH ROWBEGIN--do somethingEND |触发器优点2023-07-06 14:42:031
SQL中触发器有什么作用
触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。例如,可以控制是否允许基于顾客的当前帐户状态插入定单。 触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。 触发器的优点如下: 触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。触发器可以通过数据库中的相关表进行层叠更改。例如,可以在 titles 表的 title_id 列上写入一个删除触发器,以使其它表中的各匹配行采取删除操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。例如,触发器可以回滚试图对价格低于 10 美元的书(存储在 titles 表中)应用折扣(存储在 discounts 表中)的更新。2023-07-06 14:42:121
D-触发器的作用是什么?
D触发器:Qn+1=DQn为现态,变成次态的状态下为Qn+1,Qn+1又会成为新的Qn。在边沿触发器的逻辑符号中,在C1端加上了动态符号——一个箭头,说明触发器只对时钟的上升沿响应,如果再在动态符号前面加上一个圆圈,则表示触发器只对时钟的下降沿响应。输入端D前面标有一个“1”,表示这个输入端受时钟信号的影响,而在置一端和置零端S和R的前面没有标注1,说明这两个输入端不受时钟信号的影响,也就是说他们是异步置一和异步置零端。扩展资料:SD和RD接至基本RS触发器的输入端,它们分别是预置和清零端,低电平有效。当SD=1且RD=0时(SD的非为0,RD的非为1,即在两个控制端口分别从外部输入的电平值,原因是低电平有效),不论输入端D为何种状态,都会使Q=0,Q非=1,即触发器置0;当SD=0且RD=1(SD的非为1,RD的非为0)时,Q=1,Q非=0,触发器置1,SD和RD通常又称为直接置1和置0端。设它们均已加入了高电平,不影响电路的工作。参考资料来源:百度百科-D触发器2023-07-06 14:42:181
d触发器有哪些功能?
(一)图中输出的Q₁和Q₂波形是根据输入的CP和D端来确定的。D触发器的方程为Qn+1=D,则可以依次得出Q₁和Q₂波形的翻转。触发器具有两个稳定状态,即“0”和“1”,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。D触发器的次态取决于触发前D端的状态,即次态=D。因此,它具有置0、置1两种功能。(二)原理:在SD和RD接至基本RS触发器的输入端,分别是预置和清零端,低电平有效的情况下:D=0,CP为时钟的上升沿,输出Q=0,非Q=1;D=1,CP为时钟的上升沿,输出Q=1,非Q=0;D端输入不确定,CP=0,Q端输出不变,非Q端输出也不变;D端输入不确定,CP=1,Q端输出不变,非Q端输出也不变。扩展资料:D触发器的工作过程:1、CP=0时,与非门G3和G4封锁,其输出Q3=Q4=1,触发器的状态不变。同时,由于Q3至Q5和Q4至Q6的反馈信号将这两个门打开,可接收输入信号D,Q5=D,Q6=Q5非=D非。2、当CP由0变1时触发器翻转。此时G3和G4打开,它们的输入Q3和Q4的状态由G5和G6的输出状态决定。Q3=Q5非=D非,Q4=Q6非=D。由基本RS触发器的逻辑功能可知,Q=Q3非=D。3、触发器翻转后,在CP=1时输入信号被封锁。参考资料来源:百度百科-D触发器2023-07-06 14:42:411
触发器CP端的作用
CP是触发器的触发输入端,用于给数字触发器提供时钟的作用。数字逻辑电路的设计分为组合逻辑电路和时序逻辑电路两种类型。其中,组合逻辑电路采用常见的与非门,不需要时钟即可实现逻辑功能;时序逻辑电路将逻辑门电路集成为触发器,如常见的JK触发器。在时序逻辑电路中,最大的特点就是可以进行功能保存,在CP端没有时钟信号输入的时候,触发器的输出状态保持不变,只有在有效的CP脉冲输入时,其输出才会根据触发器的功能进行输出更新。时序逻辑电路又可以分为同步时序逻辑电路和异步时序逻辑电路:同步时序逻辑电路是指所有的触发器的CP端连接同一个脉冲所有触发器同时翻转;而异步时许逻辑电路的CP则一般是前一个触发器的输出连接后一个触发器的CP。2023-07-06 14:42:574
sql的触发器是干什么的,怎么用?
触发器是用来保证数据一致性用的.他分为两种一种是操作前触发另外一种是操作后触发 ,主要是对数据的插入,删除,修改等动作进行跟踪及作出相应动作2023-07-06 14:43:123
JK触发器的作用是什么?
J-K触发器和D触发器的逻辑功能和触发方式 客服分享收藏立即下载为了提升浏览体验,原视图版网页已升级为如下版式J-K触发器和D触发器的逻辑功能和触发方式J-K触发器和D触发器的...方式.pdf94.83K, 2页, 238次阅读 [立即下载]举报分享于2018-11-27 12:40J - K 触发器和 D 触发器的逻辑功能和触发方式J-K触发器的逻辑功能:JK触发器再有时钟脉冲作用时( CP=1 )当J=0 K=0时状态保持不变当J= 0 K=1时次态为0态当J=1 K=0时次态为 1态当J=1 K=1时次态与现态相反 D触发器(由与非门构成):当D=1时, Q=0;当D=0时, Q=1;D触发器的逻辑功能:当SD=1且RD=0时(SD的非为0, RD的非为 1 ,即在两个控制端口分别从外部输入的电平值,原因是低电平有效),不论输入端D为何种状态,都会使Q=0, Q非=1,即触发器置0;当SD=0且RD=1(SD的非为1, RD的非为0)时, Q=1, Q非=0,触发器置1,SD和RD通常又称为直接置1和置0端。我们设它们均已加入了高电平,不影响电路的工作2023-07-06 14:43:311
集成触发器的直接置位端和直接复位端有什么作用
基本RS触发器的S和R也分别叫做直接置位端和直接复位端,其逻辑电路如下图所示,为两个与非门组成的RS触发器,它有两个输入端R、S和两个输出端Q、Q非。而基本RS触发器也是集成触发器中的一种,其中直接置位端和直接复位端的作用包括有:1、当S"=1,R"=0时:无论触发器原来处于何种状态,由于S=1,则Q=1,Q非=0,触发器处于“1”态(或称置位状态)。2、当S"=0,R"=1时:无论触发器原来处于何种状态,由于R=1,则Q=0,Q非=1,触发器处于“0”态(或称复位状态)。3、当S"=0,R"=0时:集成触发器维持原来状态不变。4、当S"=1,R"=1时:此时无法确定集成触发器的状态。一般这是不允许的,因此触发器的输入端S、R不能同时为1。扩展资料:触发器:在实际的数字系统中往往包含大量的存储单元,而且经常要求他们在同一时刻同步动作,为达到这个目的,在每个存储单元电路上引入一个时钟脉冲(CLK)作为控制信号,只有当CLK到来时电路才被“触发”而动作,并根据输入信号改变输出状态。各种触发器均可由分立元件构成,也可由集成电路来实现。但随着集成电路技术的发展,集成触发器品种逐渐增加,性能优良,应用日益广泛。基本触发电路有R-S触发器,T触发器,D触发器,J-K触发器等。参考资料来源:百度百科-集成器2023-07-06 14:43:414
存储过程的触发器
所谓存储过程,是一组预编译的Transact-SQL语句,存储在SQL Server中,被作为一种数据库对象保存起来。存储过程的执行不是在客户端而是在服务器端(执行速度快)。存储过程可以是一条简单的Transact-SQL语句,也可以是复杂的Transact-SQL语句和流程控制语句的集合。 在使用Transact-SQL语言编程的过程中,我们可以将某些需要多次调用的实现某个特定任务的代码段编写成一个过程,将其保存在数据库中,并由SQL Server服务器通过过程名来调用它们,这些过程就叫做存储过程(也称为子程序)。 存储过程在第一次执行时进行语法检查和编译,编译好的版本存储在高速缓存中,用于后续调用,下次调用时可以直接执行。 存储过程的特点: 存储过程可以接受输入参数,并且可以用输出参数的形式返回值。存储过程可以包含复杂的流控制语句。 存储过程建立好以后可以被反复调用。一个存储过程可以调用另一个存储过程,嵌套调用可多达32级。 由于存储过程在建立和第一次执行的时候被解析、优化、编译和缓存(驻留在高速缓冲存储器中),因此其执行速度比直接向SQL Server发送T-SQL语句快。 存储过程的执行是通过一条语句来完成的,避免了网络上服务器和客户机之间大量Transact-SQL语句的传送,降低了网络的通信量。 存储过程可以被看作一种安全机制,即使用户没有对表或视图的访问权限,他们也可以被授予执行对表或视图进行访问的存储过程的权限。 、、、、、、、、、、、、、、、、、、、、、、、、、、、 触发器的作用 在指定的表中数据发生变化时被调用以响应INSERT、UPDATE或DELETE事件。 用于保护表中的数据,当有操作影响到触发器保护的数据时,触发器自动强制执行业务规则。 利用触发器可以方便地实现数据库中的数据完整性。 一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行(对表或视图发出update、insert、delete语句)。 触发器是一个功能强大的工具,它与表格紧密相连,在表中数据发生变化时自动强制执行。触发器可以用于SQL Server约束、默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能。 触发器的优点 触发器是自动的执行的(往表里插入、修改、删除时被自动激活,从而防止对数据的不正确修改)。 触发器是基于一个表创建的,但可以针对多个表进行操作,实现数据库中的相关表进行层叠更改。 触发器可以实现比 check约束更为复杂的数据完整性约束。 一个表中可以同时存在三个不同操作的触发器,对于同一个修改语句可以有多个不同的对策以响应。2023-07-06 14:44:211
SQL中触发器有什么作用
触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。例如,可以控制是否允许基于顾客的当前帐户状态插入定单。 触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。 触发器的优点如下: 触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。触发器可以通过数据库中的相关表进行层叠更改。例如,可以在 titles 表的 title_id 列上写入一个删除触发器,以使其它表中的各匹配行采取删除操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。例如,触发器可以回滚试图对价格低于 10 美元的书(存储在 titles 表中)应用折扣(存储在 discounts 表中)的更新。2023-07-06 14:44:361
JKD触发器的功能有哪些?
逻辑功能JK触发器再有时钟脉冲作用时(CP=1)当J=0 K=0时状态保持不变当J= 0 K=1时次态为0态当J=1 K=0时次态为1态当J=1 K=1时次态与现态相反 D触发器(由与非门构成):当D=1时,Q=0;当D=0时,Q=1;触发方式JK 触发器是在时钟沿触发的,一般是上升沿 RS D 有高电平触发,也有地电平触发,也有时钟沿触发2023-07-06 14:44:431
触发器的工作原理是什么?
输入电压的负向递减和正向递增两种不同变化方向有不同的阈值电压,使得它具有较强的抗干扰能力。施密特触发器的原理类似于带有延时的比较器。其比较的对象是输入电平和二分之一的电源电压。它和其他的比较器原理相同,带有一个比较死区以避免受到输入信号中的噪声的干扰。可以使用晶体管或是制作一个施密特触发器,使用类似74HC14的集成电路,这样的一个集成块里集成了6个施密特触发器。其电路中并不包含反馈的回路,因此当在门限电平附近受到干扰的时候,放大器的输出有可能会来回摆动。而施密特触发器的电路构成中,有一个反馈回路形成正反馈,在输入达到门限电平的时候正反馈所带来的延迟特性将会生效,并使得输出的波形变得完美。扩展资料作用1、触发器可以强制用比CHECK约束定义的约束更为复杂的约束。2、触发器发生错误时,异动的结果会被撤销。3、一个表中的多个同类触发器允许采取多个不同的对策以响应同一个修改语句。参考资料来源:百度百科—触发器2023-07-06 14:44:511
jk触发器在电路中起什么作用?
同步四进制减法计数器即0到3,始初A,B=00→11→01→10JK触发器是数字电路触发器中的一种基本电路单元。JK触发器具有置0、置1、保持和翻转功能,在各类集成触发器中,JK触发器的功能最为齐全。在实际应用中,它不仅有很强的通用性,而且能灵活地转换其他类型的触发器。由JK触发器可以构成D触发器和T触发器扩展资料:主从JK 触发器电路结构主从JK 触发器是在主从RS触发器的基础上组成的,RS触发器的R端和S端分别增加一个两输入端的与门G11和G10,将Q端和输入端经与门输出为原S端,输入端称为J端,将Q端与输入端经与门输出为原R端,输入端称为K端。工作原理由上面的电路可得到S=JQ,R=KQ。代入主从RS触发器的特征方程得到:当J=1,K=0时,Qn+1=1;J=0,K=1时,Qn+1=0;J=K=0时,Qn+1=Qn;J=K=1时,Qn+1=~Qn;由以上分析,主从JK 触发器没有约束条件。在J=K=1时,每输入一个时钟脉冲,触发器翻转一次。触发器的这种工作状态称为计数状态,由触发器翻转的次数可以计算出输入时钟脉冲的个数参考资料来源:百度百科-JK触发器2023-07-06 14:45:061
什么是T触发器?
T触发器就是只要输入端T为高平,来一个出发脉冲输出就反一下(变成原来的非);如果T为低平则不变。把Q非端和D连接。Q非为1且Q为0时,来一个脉冲Q将变为1且Q非变为0;再来一个脉冲又反过来。触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的账户状态,控制是否允许插入新订单。扩展资料:触发器有如下作用:1、可在写入数据表前,强制检验或转换数据。2、触发器发生错误时,异动的结果会被撤销。3、部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。4、可依照特定的情况,替换异动的指令 (INSTEAD OF)。参考资料来源:百度百科-触发器2023-07-06 14:45:181
RS触发器是如何起抗抖作用的
RS触发器起抗抖作用是因为开关每按压一次,输出信号仅发生一次变化。当按压按键时,S"=l,R"=0,可得出 A=0,A"=1,改变了输出信号A的状态。若由于机械开关的接触抖动,则R的状态会在0和1之间变化多次,若 R=l,由于A=0,因此G2门仍然是“有低出高”,不会影响输出的状态。同理,当松开按键时, S端出现的接触抖动亦不会影响输出的状态。扩展资料:当开关既不在R端,也不在S端,触发器的输出端是不确定的。当开关置向一侧时,就决定了触发器的输出。例如当开关置于S端,S端为低电平,R端则为高电平,与非门1的输入为低电平,与非门2的输入为高电平,这样就使触发器的Q端输出高电平,/Q的输出为低电平。如果开关置于R端,则触发器反转,Q端变为低电平,/Q端变为高电平。输入端R,S既不可能同时为高电平,也不可能同时为低电平。只有两种状况,其中一个为高电平,另一个为低电平,则触发器Q和/Q两端也必然输出状态相反的信号。参考资料来源:百度百科——RS触发器2023-07-06 14:46:093
摩托车触发器工作原理
摩托车点火是依靠 摩托车点火线圈 发电产生高压电 然后又经过高压包进一步升压 达到产生电火花的目的 而这个火花没有规律 而摩托车点火是需要非常规律的 火花的 这就成为一个问题 而触发器 正好解决了这个问题 触发器在摩托车磁电机 的旁边 而磁电机的磁铁外侧正好有个小突起 每当发动机旋转 突起转到 触发器这的时候 触发器就会发出一点点电 传送到 点火器 指挥点火器准时点火 这就是触发器的作用 而 各种摩托车的 触发器原理和造型 都大同小异 但是因为发动机造型号 和品牌各有差异 所以触发器的固定方式是不同的 有些是通用的 有些则不可以2023-07-06 14:46:331
oracle中触发器有什么作用
。触发器的定义就是说某个条件成立的时候,你触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。然后,触发器的触发条件其实在你定义的时候就已经设定好的了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。具体举例:1.在一个表中定义的语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。这个就是删除表的操作就是触发器执行的条件了。2.在一个表吕定义了行级的触发器,那当这个表中一行数据发生变化的时候,比如删除了一行记录,那触发器也会被自动执行了。不知这样讲述可否清楚了呢?2023-07-06 14:46:402
触发器是什么意思?在电工里起什么作用?
又称“双稳态多谐振荡器”。触发器(Flip Flop)是一种可以存储电路状态的电子元件。最简单的是由两个或非门,两个输入端和两个输出端组成的RS触发器(见图)。复杂一些的有带时钟(CLK)段和D(Data)端,在CLK端为高电平时跟随D端状态,而在CLK端变为低电平的瞬间锁存信号的D触发器。更常用的是两个简单D触发器级联而成的在时钟下跳沿所存信号的边缘D触发器,广泛应用于计数器、运算器、存储器等电子部件。 照 明 配 件:用于高强度气体放电灯(H.I.D)的启动,型号繁多.由于高强度气体放电灯启动时需要一个高电压来使气体电离进入等离子态,因而需要一个高压发生器做为启动器。这就是触发器早期的机械型触发器已经淘汰。现在绝大多数触发器都是使用可控硅或高压触发二极管的电子触发器,常用的型号有:OSRAM 的 CD-7 飞利浦的 SI51 SN58 爱伦的ALK400等 在外加信号触发下能转换工作状态的电路。通常用触发器的输出端电压表明其工作状态。触发器分为两类。一类称为双稳态触发器,它有两个稳定的工作状态。在外加信号触发下电路可从一种稳定的工作状态转换到另一种稳定的工作状态。另一类称为单稳态触发器,它有一个稳定的工作状态和一个暂时稳定的工作状态。无外加信号触发时触发器处于稳定的工作状态,在受外加信号触发后触发器从稳定的工作状态转换到暂时稳定的工作状态,经过短暂时间后,自动返回到原来的稳定工作状态。 触发器 双稳态触发器 基本电路如图1的上半部。它由两个反相器直接耦合而成。反相器1由晶体管T1和电阻Rc1R11及R12组成,反相器2由晶体管T2和电阻Rc2、R21及R22组成。反相器1的输出端Q即是反相器2的输入端,同样,反相器2的输出端悩也是反相器1的输入端,两级反相器是互相反馈的。这个电路具有两种稳定状态:一种稳态是T1管导通、T2管截止,Q端为低电位、悩为高电位;另一种稳态是T1管截止、T2管导通,Q端为高电位、悩端为低电位。加上电压 Ec和-Eb后电路即进入一种稳定状态。若不加触发信号,电路则永远处于这个稳定状态。 欲使电路从一种稳态转换到另一种稳态,必须外加触发信号。图1的下半部分是两个引导触发信号给各个反相器的电路。它们分别由微分电路R1C1、R2C2和隔离二极管D1、D2组成。 当外加负触发脉冲作用于引导电路的“S”端时,通过微分电路R1C1使D1导通,b1点呈低电位。此时不论触发器原处何种状态T1管截止,Q点变为高电位,T2管导通,悩点变为低电位。这种稳态称为触发器的“置位”状态,“S”端称为“置位”端。反之,外加负触发脉冲作用于“R”端时,则使悩端为高电位,Q端为低电位。这种稳态为触发器的“复位”状态,“R”端称为“复位”端。具有置位、复位功能的触发器称为R-S触发器。 双稳态触发器可用来构成各种计数器、分频器和寄存器等。 射极耦合触发器 又称施密特触发器,其原理电路如图2。它也由两级反相器直接耦合而成。第一级反相器的输出端c1是第二级反相器的输入端。第一级反相器的输入端接输入触发电压ui,第二级反相器的输出端提供输出电压u0。两级反相器通过公共的发射极电阻Re耦合在一起,因而称射极耦合触发器。这种触发器也有两种稳定状态,一种稳态是T1管导通、T2管截止,输出u0为高电位;另一种稳态是T1管截止,T2管导通,u0为低电位。触发器的稳定状态决定于输入u电位的高低,因此这种触发器具有电位触发特性。当输入ui为低电位时,T1管截止,c1点电位升高,使T2管导通,输出u0也是低电位。当ui为高电位时,T1管导通,c1点电位下降,使T2管截止,u也是高电位。射极耦合触发器可用于波形的整形和鉴幅。 触发器 单稳态触发器 单稳态触发器也由两个反相器构成(图3a)。与图1 的双稳态触发器相比,由晶体管T2组成的反相器2完全相同,但由晶体管T1组成的反相器1中,用电容器C代替电阻器R11,且R12接向 Ec。另外,在T1管的b1点接有由D1、R1及C1组成的引导电路, ui即外加触发信号。触发器的状态电压由c1及c2点输出。 触发器 图3b的波形表明单稳态触发器的工作过程。在外加负触发脉冲u到来以前(0~t1期间),触发器处于稳定状态。由于b1点通过R12接向电压 Ec,T1导通,T2截止。c1点的电压uc1为低电位,c2点电压u为高电位,电容器C被充电。在t=t1瞬间,u到来,通过微分电路R1C1使D1导通,b1呈低电位,T1由导通变为截止,uc1上升为高电位;T2导通,uc2下降为低电位。这时,电容器C通过T2放电形成暂时稳定状态(t1~t2期间),称为暂稳态。随着电容器C的放电,b1点电位上升,当t=t2时,b1点的电位又使T1管导通,uc1下降为低电位,T2管又截止,uc2电位上升。在t2~t3期间,uc2因受Rc2C充电的影响而上升缓慢,形成恢复期。t3以后进入原来的稳定状态。单稳态触发器可用于脉冲整形和脉冲延时。 触发器 各种触发器均可由分立元件构成,也可由集成电路来实现。但随着集成电路技术的发展,集成触发器品种逐渐增加,性能优良,应用日益广泛。基本触发电路有R-S触发器,T触发器,D触发器,J-K触发器等。 参考书目 J. Millman and H. Taub, Pulse, Digital and Switching Waveforms, McGraw-Hill,New York,1965.2023-07-06 14:46:472
D触发器的逻辑功能是什么?
D触发器的逻辑功能:Qn+1=D。D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即"0"和"1",在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。触发器有集成触发器和门电路组成的触发器。触发方式有电平触发和边沿触发两种,前者在CP(时钟脉冲)=1时即可触发,后者多在CP的前沿(正跳变0→1)触发。D触发器的次态取决于触发前D端的状态,即次态=D。因此,它具有置0、置1两种功能。对于边沿D触发器,由于在CP=1期间电路具有维持阻塞作用,所以在CP=1期间,D端的数据状态变化,不会影响触发器的输出状态。D触发器应用很广,可用做数字信号的寄存,移位寄存,分频和波形发生器等等。扩展资料D触发器由4个与非门组成,其中G1和G2构成基本RS触发器。电平触发的主从触发器工作时,必须在正跳沿前加入输入信号。如果在CP高电平期间输入端出现干扰信号,那么就有可能使触发器的状态出错。而边沿触发器允许在CP触发沿来到前一瞬间加入输入信号。这样,输入端受干扰的时间大大缩短,受干扰的可能性就降低了。边沿D触发器也称为维持-阻塞边沿D触发器。边沿D触发器可由两个D触发器串联而成,但第一个D触发器的CP需要用非门反向。参考资料来源:百度百科-D触发器2023-07-06 14:46:551
为什么要使用触发器
问题一:触发器什么时候使用?有什么功能?举个简单的例子说明一下。 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。(SQL Server 2000定义了新的触发器,这里不提) 我为什么要使用触发器?比如,这么两个表: Create Table Student( --学生表 StudentID int primary key, --学号 .... ) Create Table BorrowRecord( --学生借书记录表 BorrowRecord int identity(1,1), --流水号 StudentID int , --学号 BorrowDate datetime, --借出时间 ReturnDAte Datetime, --归还时间 ... ) 用到的功能有: 1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号); 2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。 等等。 这时候可以用到触发器。对于1,创建一个Update触发器: Create Trigger truStudent On Student --在Student表中创建触发器 for Update --为什么事件触发 As --事件触发后所要做的事情 if Update(StudentID) begin Update BorrowRecord Set StudentID=i.StudentID From BorrowRecord br , Deleted d ,Inserted i --Delete户和Inserted临时表 Where br.StudentID=d.StudentID end 理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。 一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是: 虚拟表Inserted 虚拟表Deleted在表记录新增时 存放新增的记录 不存储记录 修改时 存放用来更新的新记录 存放更......>> 问题二:为什么要设计边沿触发的触发器呢? 触发器分为电平触发和边沿触发两类。 电平触发的触发器原理较简单,学习触发器时,一般先学习电平触发。 电平触发的触发器主要是基本RS触发器 基本RS触发器由电平触发,并且有一个重要的约束条件:/SD和/RD不能同时为零。即:/SD+/RD=1。 许多时候,我们希望触发器只有在时钟来临时,输出状态改变,其它时候,触发器维持,因为这样做可以让多个电路单元的状态同时得以改变,这个时钟,我们称为同步时钟。 同步RS触发器与基本RS触发器的不同之处在于,只有时钟CP=1的时候,输出状态才能被改变。但是,同步触发器也具有一个约束条件,就是当CP=1时,S和R不能同时为1。 此外,同步RS触发器还有一个不足之处在于:当CP=1时,S和R若多次改变,每次改变都会影响输出。这种现象,称为空翻现象。 主从触发器的输出改变仅仅取决于CP的下降沿时刻。有效的解决了空翻问题。但是,主从RS触发器仍然存在约束条件:R、S不能同时为1。 若将主从RS触发器的两个输出分别反馈至输入,即可解除这个约束。这就是JK触发器。 实际应用的触发器,大多是在JK触发器基础上作出简单的变更得到的。 问题三:电路为什么要有触发器这种结构 设计触发器时,需要注意触发器的几个时间特性,满足这些特性触发器才能正常工作: 建立时间(T setup time ):是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。 保持时间(T hold):是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。 数据输出延时(Tco, Clock-to-Output Delay):当时钟有效沿变化后,数据从输入端到输出端的最小时间间隔。 问题四:为什么在触发器中不能使用mit When issuing a rollback statement ,if an atomic execution context is active, then an exception condition is raised: invalid transaction termination. Quoted from SQL99. 对于触发器oracle是支持这个标准的。 问题五:大型系统必须得要存储过程和触发器吗 假如你面试的话,面试官肯定不会爱听你说的。如果是一个网络系统,在以下情况下必须使用存储过程:1 涉及大批量数据统计处理你不能把N万记录从服务器通过网络传到客户端去处理,比如客户端是对流量敏感的手机用户,你这么做他们会杀了你,你只能用存储过程,把这些数据在服务器上统计出来,然后把结果传给客户端用户;2 涉及大量用户频繁插入更新删除数据的场合你必须给用户提供专门的存储过程、通过事务处理来完成这类操作,否则,必然会使数据库表的内容发生数据不一致、以及脏读等等问题,此时的存储过程、在这类操作中要小心给表加锁解锁(说白了就是作好事务处理开始、结束和回滚),如果这些事务处理放在客户端,一旦开始事务、但由于网络连接中断,则可能导致数据库无法解锁而停止工作。 3 涉及查询多个服务器上数据的情况,用户完全不可能知道他对面的服务器有多少、各个服务器存储的都是什么数据,此时也可能是做分布式数据库、也可能是仅仅做的多服务器系统(如新闻服务器、广告服务器、各类商品数据的服务器),无论那种情况,你只能编写存储过程、根据用户要求查询这些数据。 等等吧,所以很多应用系统,大多外围程序就是输入输出,真正的功能全都在存储过程里体现。 触发器是个数据同步的程序,比如你修改了表A、你同时期望修改表B,那么就给表A上做触发器吧。简单说就这么些东西。 问题六:信用卡问题 信用记录是全国联网的 与国外没有联系 而且现在我国的信用记录也不算十分完善 你可以放心,会耿请到信用卡的 问题七:设置一个同步十进制计数器需要几个触发器? 答案是四个,为什么 一个触发器,可实现二个状态; 两个触发器,可实现四个状态; 三个触发器,可实现八个状态; 四个触发器,可实现16个状态; 五个触发器,可实现32个状态; ……。 十进制数:0~9,共十个状态。 一个同步十进制计数器需要几个触发器? 四个~无穷个,都行。 问题八:异步fifo中同步为什么要用两级触发器 异步FIFO通过比较读写地址进行满空判断,但是读写地址属于不同的时钟域,所以在比较之前需要先将读写地址进行同步处理,将写地址同步到读时钟域再和读地址比较进行FIFO空状态判断(同步后的写地址一定是小于或者等于当前的写地址,所以此时判断FIFO为空不一定是真空,这样更保守),将读地址同步到写时钟域再和写地址比较进行FIFO满状态判断(同步后的读地址一定是小于或者等于当前的读地址,所以此时判断FIFO为满不一定是真空,这样更保守),这样可以保证FIFO的特性:FIFO空之后不能继续读取,FIFO满之后不能继续写入。 大多数情形下,异步FIFO两端的时钟不是同频的,或者读快写慢,或者读慢写快,这时候进行地址同步的时候,可能会有地址遗漏,以读慢写快为例,进行满标志判断的时候需要将读地址同步到写时钟域,因为读慢写快,所以不会有读地址遗漏,同步后的读地址滞后当前读地址,所以可能满标志会提前产生。进行空标志判断的时候需要将写地址同步到读地址,因为读慢写快,所以当读时钟同步写地址的时候,必然会漏掉一部分写地址(写时钟快,写地址随写时钟翻转,直到满标志出现为止),那到底读时钟会同步到哪个写地址?不必在意是哪一个,我们关注的是漏掉的地址会不会对FIFO的空标志产生影响。比如写地址从0写到10,期间读时钟域只同步到了2,5,7这三个写地址,漏掉了其他地址。同步到7地址时,真实的写地址可能已经写到10地址,相当于“在读时钟域还没来得及觉察的情况下,写时钟域可能偷偷写了数据到FIFO去”,这样在比较读写地址的时候不会产生FIFO“空”读操作。漏掉的地址也没有对FIFO的逻辑操作产生影响。 我们可以对异步FIFO的地址采用binary编码,这样并不影响异步FIFO的功能,前提是读写地址同步时能够保持正确。这种情况在功能仿真时完全正确,问题只有到时序仿真时才会遇到。毛刺可以说是异步电路的杀手,一个毛刺被触发器采样后会被放大,然后传播,导致电路功能出错。binary编码的地址总线在跳变时极易产生毛刺,因为binary编码是多位跳变,在实现电路时不可能做到所有的地址总线等长,address bus skew必然存在,而且写地址和读地址分属不同时钟域,读写时钟完全异步,这样地址总线在进行同步过程中出错不可避免,比如写地址在从0111到1000转换时4条地址线同时跳变,这样读时钟在进行写地址同步后得到的写地址可能是0000-1111的某个值,这个完全不能确定,所以用这个同步后的写地址进行FIFO空判断的时候难免出错。 这个时候gray码体现了价值,一次只有一位数据发生变化,这样在进行地址同步的时候,只有两种情况:1.地址同步正确;2.地址同步出错,但是只有1位出错;第一种正确的情况不需要分析,我们关注第二种,假设写地址从000->001,读时钟域同步出错,写地址为000->000,也就是地址没有跳变,但是用这个错误的写地址去做空判断不会出错,最多是让空标志在FIFO不是真正空的时候产生,而不会出现空读的情形。所以gray码保证的是同步后的读写地址即使在出错的情形下依然能够保证FIFO功能的正确性,当然同步后的读写地址出错总是存在的(因为时钟异步,采样点不确定)。这里需要注意gray码只是在相邻两次跳变之间才会出现只有1位数据不一致的情形,超过两个周期则不一定,所有地址总线bus skew一定不能超过一个周期,否则可能出现gray码多位数据跳变的情况,这个时候gray码就失去了作用,因为这时候同步后的地址已经不能保证只有1位跳变了。 ......>> 问题九:触发器的sql语句为什么要用游标 不一定要用游标的。游标只是用来批量存储一些值。比如说你需要把某一张或者几张表的数据遍历憨边。才会用到游标。只是单纯的逻辑判断及处理的话,就不需要了。 如果你有其他更详细的问题的话,可以继续问。上面的问题太宽泛了。2023-07-06 14:47:151
具有什么功能的触发器叫什么触发器
按逻辑功能不同分为:RS触发器、D触发器、JK触发器、T触发器。按触发方式不同分为:电平触发器、边沿触发器和主从触发器。按电路结构不同分为:基本RS触发器和钟控触发器。按存储数据原理不同分为:静态触发器和动态触发器。按构成触发器的基本器件不同分为:双极型触发器和MOS型触发器。触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。触发器可以从DBA_TRIGGERS,USER_TRIGGERS数据字典中查到。照明配件用于高强度气体放电灯(H.I.D)的启动,型号繁多.由于高强度气体放电灯启动时需要一个高电压来使气体电离进入等离子态,因而需要一个高压发生器做为启动器。这就是触发器早期的机械型触发器已经淘汰。现在绝大多数触发器都是使用可控硅或高压触发二极管的电子触发器,常用的型号有:OSRAM的CD-7飞利浦的SI51SN58爱伦的ALK400等双稳态触发器基本电路如图1的上半部。它由两个反相器直接耦合而成。反相器1由晶体管T1和电阻Rc1R11及R12组成,反相器2由晶体管T2和电阻Rc2、R21及R22组成。反相器1的输出端Q即是反相器2的输入端,同样,反相器2的输出端悩也是反相器1的输入端,两级反相器是互相反馈的。这个电路具有两种稳定状态:图1一种稳态是T1管导通、T2管截止,Q端为低电位、悩为高电位;另一种稳态是T1管截止、T2管导通,Q端为高电位、悩端为低电位。加上电压Ec和-Eb后电路即进入一种稳定状态。若不加触发信号,电路则永远处于这个稳定状态。欲使电路从一种稳态转换到另一种稳态,必须外加触发信号。图1的下半部分是两个引导触发信号给各个反相器的电路。它们分别由微分电路R1C1、R2C2和隔离二极管D1、D2组成。当外加负触发脉冲作用于引导电路的“S”端时,通过微分电路R1C1使D1导通,b1点呈低电位。此时不论触发器原处何种状态T1管截止,Q点变为高电位,T2管导通,悩点变为低电位。这种稳态称为触发器的“置位”状态,“S”端称为“置位”端。反之,外加负触发脉冲作用于“R”端时,则使悩端为高电位,Q端为低电位。这种稳态为触发器的“复位”状态,“R”端称为“复位”端。具有置位、复位功能的触发器称为R-S触发器。双稳态触发器可用来构成各种计数器、分频器和寄存器等。射极耦合触发器又称施密特触发器,其原理电路如图2。它也由两级反相器直接耦合而成。第一级反相器的输出端c1是第二级反相器的输入端。第一级反相器的输入端接输入触发电压ui,第二级反相器的输出端提供输出电压u0。两级反相器通过公共的发射极电阻Re耦合在一起,因而称射极耦合触发器。这种触发器也有两种稳定状态,一种稳态是T1管导通、T2管图2截止,输出u0为高电位;另一种稳态是T1管截止,T2管导通,u0为低电位。触发器的稳定状态决定于输入u电位的高低,因此这种触发器具有电位触发特性。当输入ui为低电位时,T1管截止,c1点电位升高,使T2管导通,输出u0也是低电位。当ui为高电位时,T1管导通,c1点电位下降,使T2管截止,u也是高电位。射极耦合触发器可用于波形的整形和鉴幅。单稳态触发器单稳态触发器也由两个反相器构成(图3a)。与图1的双稳态触发器相比,由晶体管T2组成的反相器2完全相同,但由晶体管T1组成的反相器1中,用电容器C代替电阻器R11,且R12接向Ec。另外,在T1管的b1点接有由D1、R1及C1组成的引导电路,ui即外加触发信号。触发器的状态电压由c1及c2点输出。图3b的波形表明单稳态触发器的工作过程。在外加负触发脉冲u到来以前(0~t1期间),触发器处于稳定状态。由于b1点通过R12接向电压Ec,T1导通,T2截止。c1点的电压uc1为低电位,c2点电压u为高电位,电容器C被充电。在t=t1瞬间,u到来,通过微分电路R1C1使D1导通,b1呈低电位,T1由导通变为截止,uc1上升为高电位;T2导通,uc2图3下降为低电位。这时,电容器C通过T2放电形成暂时稳定状态(t1~t2期间),称为暂稳态。随着电容器C的放电,b1点电位上升,当t=t2时,b1点的电位又使T1管导通,uc1下降为低电位,T2管又截止,uc2电位上升。在t2~t3期间,uc2因受Rc2C充电的影响而上升缓慢,形成恢复期。t3以后进入原来的稳定状态。单稳态触发器可用于脉冲整形和脉冲延时。各种触发器均可由分立元件构成,也可由集成电路来实现。但随着集成电路技术的发展,集成触发器品种逐渐增加,性能优良,应用日益广泛。基本触发电路有R-S触发器,T触发器,D触发器,J-K触发器等。2023-07-06 14:47:221
集成触发器kj004组成的集成触发电路有什么作用和特点
集成触发器kj004组成的集成触发电路作用:加快电路电流流通,保证电路正常运行。集成触发器kj004组成的集成触发电路的特点:具有可靠性高,技术性能好,体积小,功耗低,调试方便等。集成电路是把许许多多的电路元件集成在一个小小的硅片上面。2023-07-06 14:47:301
摩托车的触发器起什么作用?
摩托车磁电机触发器(触发线圈)的作用,是当它与磁电机转子上的触发台相遇时,向点火器发出点火信号,点火器接到这个点火信号,就会向高压包供电,由高压包内线圈感应出高压电,最后提供给火花塞完成点火,这个触发器就是发出点火信号用的。2023-07-06 14:47:404
触发器的应用和用法?
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为什么要使用触发器?比如,这么两个表: Create Table Student( --学生表 StudentID int primary key, --学号 .... ) Create Table BorrowRecord( --学生借书记录表 BorrowRecord int identity(1,1), --流水号 StudentID int , --学号 BorrowDate datetime, --借出时间 ReturnDAte Datetime, --归还时间 ... ) 用到的功能有: 1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号); 2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。 等等。 这时候可以用到触发器。对于1,创建一个Update触发器: Create Trigger truStudent On Student --在Student表中创建触发器 for Update --为什么事件触发 As --事件触发后所要做的事情 if Update(StudentID) begin Update BorrowRecord Set StudentID=i.StudentID From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表 Where br.StudentID=d.StudentID end 理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。 一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是: 虚拟表Inserted 虚拟表Deleted 在表记录新增时 存放新增的记录 不存储记录 修改时 存放用来更新的新记录 存放更新前的记录 删除时 不存储记录 存放被删除的记录 一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。 对于2,创建一个Delete触发器 Create trigger trdStudent On Student for Delete As Delete BorrowRecord From BorrowRecord br , Delted d Where br.StudentID=d.StudentID 从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。 SQL触发器实例2/* 建立虚拟测试环境,包含:表[卷烟库存表],表[卷烟销售表]。 请大家注意跟踪这两个表的数据,体会触发器到底执行了什么业务逻辑,对数据有什么影响。 为了能更清晰的表述触发器的作用,表结构存在数据冗余,且不符合第三范式,这里特此说明。 */ USE Master GO IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = "U" AND NAME = "卷烟库存表") DROP TABLE 卷烟库存表 GO IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = "U" AND NAME = "卷烟销售表") DROP TABLE 卷烟销售表 GO --业务规则:销售金额 = 销售数量 * 销售单价 业务规则。 CREATE TABLE 卷烟销售表 ( 卷烟品牌 VARCHAR(40) PRIMARY KEY NOT NULL, 购货商 VARCHAR(40) NULL, 销售数量 INT NULL, 销售单价 MONEY NULL, 销售金额 MONEY NULL ) GO --业务规则:库存金额 = 库存数量 * 库存单价 业务规则。 CREATE TABLE 卷烟库存表 ( 卷烟品牌 VARCHAR(40) PRIMARY KEY NOT NULL, 库存数量 INT NULL, 库存单价 MONEY NULL, 库存金额 MONEY NULL ) GO --创建触发器,示例1 /* 创建触发器[T_INSERT_卷烟库存表],这个触发器较简单。 说明: 每当[卷烟库存表]发生 INSERT 动作,则引发该触发器。 触发器功能: 强制执行业务规则,保证插入的数据中,库存金额 = 库存数量 * 库存单价。 注意: [INSERTED]、[DELETED]为系统表,不可创建、修改、删除,但可以调用。 重要: 这两个系统表的结构同插入数据的表的结构。 */ IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = "TR" AND NAME = "T_INSERT_卷烟库存表") DROP TRIGGER T_INSERT_卷烟库存表 GO CREATE TRIGGER T_INSERT_卷烟库存表 ON 卷烟库存表 FOR INSERT AS --提交事务处理 BEGIN TRANSACTION --强制执行下列语句,保证业务规则 UPDATE 卷烟库存表 SET 库存金额 = 库存数量 * 库存单价 WHERE 卷烟品牌 IN (SELECT 卷烟品牌 from INSERTED) COMMIT TRANSACTION GO /* 针对[卷烟库存表],插入测试数据: 注意,第一条数据(红塔山新势力)中的数据符合业务规则, 第二条数据(红塔山人为峰)中,[库存金额]空,不符合业务规则, 第三条数据(云南映像)中,[库存金额]不等于[库存数量]乘以[库存单价],不符合业务规则。 第四条数据库存数量为0。 请注意在插入数据后,检查[卷烟库存表]中的数据是否 库存金额 = 库存数量 * 库存单价。 */ INSERT INTO 卷烟库存表(卷烟品牌,库存数量,库存单价,库存金额) SELECT "红塔山新势力",100,12,1200 UNION ALL SELECT "红塔山人为峰",100,22,NULL UNION ALL SELECT "云南映像",100,60,500 UNION ALL SELECT "玉溪",0,30,0 GO --查询数据 SELECT * FROM 卷烟库存表 GO /* 结果集 RecordId 卷烟品牌 库存数量 库存单价 库存金额 -------- ------------ -------- ------- --------- 1 红塔山新势力 100 12.0000 1200.0000 2 红塔山人为峰 100 22.0000 2200.0000 3 云南映像 100 60.0000 6000.0000 4 玉溪 0 30.0000 .0000 (所影响的行数为 4 行) */ --触发器示例2 /* 创建触发器[T_INSERT_卷烟销售表],该触发器较复杂。 说明: 每当[卷烟库存表]发生 INSERT 动作,则引发该触发器。 触发器功能: 实现业务规则。 业务规则: 如果销售的卷烟品牌不存在库存或者库存为零,则返回错误。 否则则自动减少[卷烟库存表]中对应品牌卷烟的库存数量和库存金额。 */ IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = "TR" AND NAME = "T_INSERT_卷烟销售表") DROP TRIGGER T_INSERT_卷烟销售表 GO CREATE TRIGGER T_INSERT_卷烟销售表 ON 卷烟销售表 FOR INSERT AS BEGIN TRANSACTION --检查数据的合法性:销售的卷烟是否有库存,或者库存是否大于零 IF NOT EXISTS ( SELECT 库存数量 FROM 卷烟库存表 WHERE 卷烟品牌 IN (SELECT 卷烟品牌 FROM INSERTED) ) BEGIN --返回错误提示 RAISERROR("错误!该卷烟不存在库存,不能销售。",16,1) --回滚事务 ROLLBACK RETURN END IF EXISTS ( SELECT 库存数量 FROM 卷烟库存表 WHERE 卷烟品牌 IN (SELECT 卷烟品牌 FROM INSERTED) AND 库存数量 <= 0 ) BEGIN --返回错误提示 RAISERROR("错误!该卷烟库存小于等于0,不能销售。",16,1) --回滚事务 ROLLBACK RETURN END --对合法的数据进行处理 --强制执行下列语句,保证业务规则 UPDATE 卷烟销售表 SET 销售金额 = 销售数量 * 销售单价 WHERE 卷烟品牌 IN (SELECT 卷烟品牌 FROM INSERTED) DECLARE @卷烟品牌 VARCHAR(40) SET @卷烟品牌 = (SELECT 卷烟品牌 FROM INSERTED) DECLARE @销售数量 MONEY SET @销售数量 = (SELECT 销售数量 FROM INSERTED) UPDATE 卷烟库存表 SET 库存数量 = 库存数量 - @销售数量, 库存金额 = (库存数量 - @销售数量)*库存单价 WHERE 卷烟品牌 = @卷烟品牌 COMMIT TRANSACTION GO --请大家自行跟踪[卷烟库存表]和[卷烟销售表]的数据变化。 --针对[卷烟销售表],插入第一条测试数据,该数据是正常的。 INSERT INTO 卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额) SELECT "红塔山新势力","某购货商",10,12,1200 GO --针对[卷烟销售表],插入第二条测试数据,该数据 销售金额 不等于 销售单价 * 销售数量。 --触发器将自动更正数据,使 销售金额 等于 销售单价 * 销售数量。 INSERT INTO 卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额) SELECT "红塔山人为峰","某购货商",10,22,2000 GO --针对[卷烟销售表],插入第三条测试数据,该数据中的卷烟品牌在 卷烟库存表中找不到对应。 --触发器将报错。 INSERT INTO 卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额) SELECT "红河V8","某购货商",10,60,600 GO /* 结果集 服务器: 消息 50000,级别 16,状态 1,过程 T_INSERT_卷烟销售表,行 15 错误!该卷烟不存在库存,不能销售。 */ --针对[卷烟销售表],插入第三条测试数据,该数据中的卷烟品牌在 卷烟库存表中库存为0。 --触发器将报错。 INSERT INTO 卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额) SELECT "玉溪","某购货商",10,30,300 GO /* 结果集 服务器: 消息 50000,级别 16,状态 1,过程 T_INSERT_卷烟销售表,行 29 错误!该卷烟库存小于等于0,不能销售。 */ --查询数据 SELECT * FROM 卷烟库存表 SELECT * FROM 卷烟销售表 GO /* 补充: 1、本示例主要通过一个简单的业务规则实现来进行触发器使用的说明,具体的要根据需要灵活处理; 2、关于触发器要理解并运用好 INSERTED ,DELETED 两个系统表; 3、本示例创建的触发器都是 FOR INSERT ,具体的语法可参考: ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Trigger语法//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] --用于加密触发器 { { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS [ { IF UPDATE ( column ) [ { AND | OR } UPDATE ( column ) ] [ ...n ] | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) { comparison_operator } column_bitmask [ ...n ] } ] sql_statement [ ...n ] } } 4、关于触发器,还应该注意 (1)、DELETE 触发器不能捕获 TRUNCATE TABLE 语句。 (2)、触发器中不允许以下 Transact-SQL 语句: ALTER DATABASE CREATE DATABASE DISK INIT DISK RESIZE DROP DATABASE LOAD DATABASE LOAD LOG RECONFIGURE RESTORE DATABASE RESTORE LOG (3)、触发器最多可以嵌套 32 层。 */ --修改触发器 --实质上,是将 CREATE TRIGGER ... 修改为 ALTER TRIGGER ...即可。 --删除触发器 DROP TRIGGER xxx GO --删除测试环境 DROP TABLE 卷烟库存表 GO DROP TABLE 卷烟销售表 GO DROP TRIGGER T_INSERT_卷烟库存表 GO DROP TRIGGER T_INSERT_卷烟销售表 GO ################################################################## 触发器的基础知识和例子 :create trigger tr_name on table/view {for | after | instead of } [update][,][insert][,][delete] [with encryption] as {batch | if update (col_name) [{and|or} update (col_name)] } 说明: 1 tr_name :触发器名称 2 on table/view :触发器所作用的表。一个触发器只能作用于一个表 3 for 和after :同义 4 after 与instead of :sql 2000新增项目afrer 与 instead of 的区别 After 在触发事件发生以后才被激活,只可以建立在表上 Instead of 代替了相应的触发事件而被执行,既可以建立在表上也可以建立在视图上 5 insert、update、delete:激活触发器的三种操作,可以同时执行,也可选其一 6 if update (col_name):表明所作的操作对指定列是否有影响,有影响,则激活触发器。此外,因为delete 操作只对行有影响, 所以如果使用delete操作就不能用这条语句了(虽然使用也不出错,但是不能激活触发器,没意义)。 7 触发器执行时用到的两个特殊表:deleted ,inserted deleted 和inserted 可以说是一种特殊的临时表,是在进行激活触发器时由系统自动生成的,其结构与触发器作用的表结构是一 样的,只是存放 的数据有差异。 续 下面表格说明deleted 与inserted 数据的差异 deleted 与inserted 数据的差异 Inserted 存放进行insert和update 操作后的数据 Deleted 存放进行delete 和update操作前的数据 注意:update 操作相当于先进行delete 再进行insert ,所以在进行update操作时,修改前的数据拷贝一条到deleted 表中,修改后 的数据在存到触发器作用的表的同时,也同时生成一条拷贝到insered表中/////////CREATE TRIGGER [TRIGGER admixture_receive_log] ON dbo.chl_lydj FOR UPDATEASbegindeclare @djsfxg char(10) declare @wtbh char(20)select @wtbh=wtbh from insertedupdate ly_tzk set djsfxg="已修改" where wtbh=@wtbhendif (select data_sfjl from t_logsetup)="是"begindeclare @oldcjmc char (100) declare @oldlyrq datetimedeclare @oldbzbh char (60) declare @oldzl char (20)declare @olddj char (10)declare @newcjmc char (100) declare @newlyrq datetimedeclare @newbzbh char (60) declare @newzl char (20)declare @newdj char (10) declare @xgr char (20) select @oldcjmc=cjmc,@oldlyrq=lyrq,@oldbzbh=bzbh,@oldzl=zl,@olddj=dj from deletedselect @newcjmc=cjmc,@newlyrq=lyrq,@newbzbh=bzbh,@newzl=zl,@newdj=dj from insertedselect @xgr=xgr from t_modifyuser where @wtbh=wtbhif @oldcjmc<>@newcjmcbegininsert into t_modifylog (wtbh, mod_time, mod_table, mod_field, ori_value, now_value, mod_people) values(@wtbh,getdate(), "chl_lydj","cjmc", @oldcjmc, @newcjmc, @xgr)endend//////////修改时,直接把‘create"改为‘alter"即可/////////////////////////CREATE TRIGGER [TRIGGER ly_tzk_syf] ON dbo.ly_tzk FOR insert ASbegindeclare @clmc char(100) declare @dwbh char(100) declare @syf char(100) declare @dwgcbh char(100) declare @wtbh char(50) declare @dj_1 money declare @feiyong_z money declare @feiyong_xf money declare @feiyong_sy money declare @dj char(20)select @wtbh=wtbh , @clmc=clmc , @dwbh=dwbh ,@syf=syf from insertedselect @dj=dj from feihao_bz where clmc=@clmcselect @feiyong_z=feiyong_z, @feiyong_xf=feiyong_xf, @feiyong_sy=feiyong_sy from gongchengxinxi where dwgcbh=@dwbh set @dj_1=convert(money ,@dj)if @dj_1 <>0 beginset @feiyong_xf=@feiyong_xf+@dj_1set @feiyong_sy=@feiyong_sy-@dj_1update ly_tzk set syf=@dj where wtbh=@wtbh update gongchengxinxi set feiyong_xf=@feiyong_xf, feiyong_sy=@feiyong_sy where dwgcbh=@dwbh endelse update ly_tzk set syf=convert(char , 0.0) where wtbh=@wtbhend//////////////////////CREATE TRIGGER [TRIGGER ly_tzk_syf_shanchu] ON dbo.ly_tzk FOR delete ASbegindeclare @clmc char(100) declare @dwbh char(100) declare @dwgcbh char(100) declare @wtbh char(50) declare @feiyong_z money declare @feiyong_xf money declare @feiyong_sy money declare @syf char(100) declare @syf_1 money--declare @dj char(20) declare @dj_1 money select @wtbh=wtbh , @clmc=clmc , @dwbh=dwbh ,@syf=syf from inserted--select @dj=dj from feihao_bz where clmc=@clmcselect @feiyong_z=feiyong_z, @feiyong_xf=feiyong_xf, @feiyong_sy=feiyong_sy from gongchengxinxi where dwgcbh=@dwbh set @syf_1=convert(money ,@syf)if @syf_1 <>0 beginset @feiyong_xf=@feiyong_xf-@syf_1set @feiyong_sy=@feiyong_sy+@syf_1 update gongchengxinxi set feiyong_xf=@feiyong_xf, feiyong_sy=@feiyong_sy where dwgcbh=@dwbh endend//////////////////////2023-07-06 14:47:482
触发器有什么作用?
一、触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即“0”和“1”,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。二、触发器的作用1、可在写入数据表前,强制检验或转换数据。2、触发器发生错误时,异动的结果会被撤销。3、部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。4、可依照特定的情况,替换异动的指令 (INSTEAD OF)。扩展资料:触发器的优点触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制用比CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。参考资料:百度百科-触发器2023-07-06 14:48:131
触发器有什么作用?
一、触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即“0”和“1”,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。二、触发器的作用1、可在写入数据表前,强制检验或转换数据。2、触发器发生错误时,异动的结果会被撤销。3、部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。4、可依照特定的情况,替换异动的指令 (INSTEAD OF)。扩展资料:触发器的优点触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制用比CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。参考资料:百度百科-触发器2023-07-06 14:48:261
触发器是干什么用的,有什么作用。
一、触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即“0”和“1”,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。二、触发器的作用1、可在写入数据表前,强制检验或转换数据。2、触发器发生错误时,异动的结果会被撤销。3、部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。4、可依照特定的情况,替换异动的指令 (INSTEAD OF)。扩展资料:触发器的优点触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制用比CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。参考资料:百度百科-触发器2023-07-06 14:48:419
触发器是干什么用的,有什么作用。
一、触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即“0”和“1”,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。二、触发器的作用1、可在写入数据表前,强制检验或转换数据。2、触发器发生错误时,异动的结果会被撤销。3、部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。4、可依照特定的情况,替换异动的指令 (INSTEAD OF)。扩展资料:触发器的优点触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制用比CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。参考资料:百度百科-触发器2023-07-06 14:49:201
触发器的作用?
1、可在写入数据表前,强制检验或转换数据。(保证数据安全)2、触发器发生错误时,异动的结果会被撤销。(如果触发器执行错误,那么前面用户已经执行成功的操作也会被撤销;事务安全)3、部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。2023-07-06 14:49:343
数据库中触发器的作用是什么
触发器是数据库提供给程序员和数据分析员来保证数据完整性的一种机制,它是一种与数据表事件相关的特殊的存储过程。触发器的执行不是由程序调用,也不需要手工开启,而是由数据表上的事件来触发,当用户对一个数据表进行增、删、改操作时就会激活它执行。触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。触发器功能强大,可以轻松可靠地实现许多复杂的功能,但也不能过于依赖触发器,滥用触发器会造成关系数据库及应用程序维护困难,性能、效率低下等问题的产生,在实际问题中,要根据实际需要选择合适的解决方案。触发器是一种特殊的存储过程,在插入、删除、修改特定表中的数据时触发执行,拥有比数据库本身更强大的数据控制能力,其作用有以下四大方面。1.数据安全数据安全主要是指对信息系统中的业务数据提供一种数据变更的审核机制,当其通过安全策略的审核后,允许用户变更相关数据,否则直接拒绝数据变更的请求。安全原理:基于数据库的值使用户具有操作数据库的某种权利。((1)可以基于时间限制用户的操作。例如,不允许下班后和节假日修改数据库数据。(2)可以基于数据库中的数据限制用户的操作。例如,不允许股票价格的升幅一次超过10%。2.数据审计数据审计主要是指对数据服务器上的记录进行变更时的一种用户权限的即时审查与用户行为的全方位记录,以便事后对数据变更过程的追溯,保证数据变更的合法性。审计原理:跟踪用户对数据库的操作。((1)审计用户操作数据库的语句。(2)把用户对数据库的更新写入审计表。3.数据约束数据约束是指对用户的操作行为将导致业务数据与实际情况相悖的行为进行检查约束,而不让其发生,从而保证数据的完整性与一致性。约束原理:对用户操作与实际逻辑的约束检查。((1)实现数据完整性检查和约束。例如,回退任何企图买进超过自己资金的货物。(2)提供可变的缺省值。4.数据连环更新数据连环更新是指当对数据进行更新操作时,将所有与此数据相关联的数据作联合的更新操作,以保证数据的完整性与一致性。连环更新原理:对关联数据作联合更新操作。((1)修改或删除时级联修改或删除其他表中与之匹配的行。(2)修改或删除时把其他表中与之匹配的行设成NULL值。(3)修改或删除时把其他表中与之匹配的行级联设成缺省值。2023-07-06 14:49:411
数据库触发器有什么作用?
触发器的作用:自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。同步实时地复制表中的数据。实现复杂的非标准的数据库相关完整性规则。可在写入数据表前,强制检验或转换数据。触发器发生错误时,异动的结果会被撤销。部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。可依照特定的情况,替换异动的指令 (INSTEAD OF)。扩展资料:分类SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。DML触发器当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。DDL触发器它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。登录触发器登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。参考资料来源:百度百科-触发器2023-07-06 14:49:501
数据库触发器有什么作用?
触发器的作用:自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。同步实时地复制表中的数据。实现复杂的非标准的数据库相关完整性规则。可在写入数据表前,强制检验或转换数据。触发器发生错误时,异动的结果会被撤销。部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。可依照特定的情况,替换异动的指令 (INSTEAD OF)。扩展资料:分类SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。DML触发器当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。DDL触发器它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。登录触发器登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。参考资料来源:百度百科-触发器2023-07-06 14:50:075
SQL中触发器有什么作用
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。 触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。 触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。 SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。 语法为: CREATE TRIGGER `<databaseName>`.`<triggerName>` < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] > ON [dbo]<tableName> //dbo代表该表的所有者 FOR EACH ROW BEGIN --do something END 触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。 约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性(RI) 则应通过 FOREIGN KEY 约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。 CHECK 约束只能根据逻辑表达式或同一表中的另一列来验证列值。如果应用程序要求根据另一个表中的列验证列值,则必须使用触发器。约束只能通过标准的系统错误信息传递错误信息。如果应用程序要求使用(或能从中获益)自定义信息和较为复杂的错误处理,则必须使用触发器。 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。当更改外键且新值与主键不匹配时,此类触发器就可能发生作用。例如,可以在 titleauthor.title_id 上创建一个插入触发器,使它在新值与 titles.title_id 中的某个值不匹配时回滚一个插入。不过,通常使用 FOREIGN KEY 来达到这个目的。 如果触发器表上存在约束,则在 INSTEAD OF 触发器执行后但在 AFTER 触发器执行前检查这些约束。如果约束破坏,则回滚 INSTEAD OF 触发器操作并且不执行 AFTER 触发器。实例1:insert触发器create trigger tri_inserton studentfor insertasdeclare @student_id char(10)select @student_id=s.student_id fromstudent s inner join inserted ion s.student_id=i.student_idif @student_id="0000000001"beginraiserror("不能插入1的学号!",16,8)rollback tranendgo实例2:update触发器create trigger tri_updateon studentfor updateasif update(student_id)beginraiserror("学号不能修改!",16,8)rollback tranendgo实例3:delete触发器示create trigger tri_deleteon studentfor deleteasdeclare @student_id varchar(10)select @student_id=student_id from deletedif @student_id="admin"beginraiserror("错误",16,8)rollback tranend2023-07-06 14:50:414
基本RS触发器有什么作用
基本RS触发器具有置位、复位和保持(记忆)的功能。RS触发器一般用来抵抗开关的抖动。为了消除开关的接触抖动,可在机械开关与被驱动电路间接的接入一个基本RS触发器,如图1所示838电子。S"=0, R"=l,可得出A=l, A‘=0。当按压按键时,S"=l,R"=0,可得出 A=0,A"=1,改变了输出信号A的状态。若由于机械开关的接触抖动,则R的状态会在0和1之间变化多次,若 R=l,由于A=0,因此G2门仍然是“有低出高”,不会影响输出的状态。同理,当松开按键时, S端出现的接触抖动亦不会影响输出的状态。因此,图1所示的电路,开关每按压一次,A点的输出信号仅发生一次变化。扩展资料四种输入与输出的关系:1、S"=0,R"=1:无论触发器原来处于何种状态,由于S=1,则Q=1,Q非=0,触发器处于“1”态(或称置位状态)。触发器的状态是由S所决定的,称S为直接置位端。2、S"=1,R"=0:无论触发器原来处于何种状态,由于R=1,则Q=0,Q非=1,触发器处于“0”态(或称复位状态)。触发器的状态是由R所决定的,称R为直接复位端。3、S"=1,R"=1:触发器维持原来状态不变。4、S"=0,R"=0:此时无法确定触发器的状态。一般这是不允许的,因此触发器的输入端S、R不能同时为1。参考资料来源:百度百科-RS触发器2023-07-06 14:50:523
什么是触发器,使用触发器的好处是什么
触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由个事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。 触发器可以查询其他表,而且可以包含复杂的 SQL 语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。 触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。 创建触发器的SQL语法 DELIMITER | CREATE TRIGGER `<databaseName>`.`<triggerName>` < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] > ON <tableName> FOR EACH ROW BEGIN --do something END | 触发器的优点 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。 比较触发器与约束 约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性 (RI) 则应通过 FOREIGN KEY 约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。 例如:除非 REFERENCES 子句定义了级联引用操作,否则 FOREIGN KEY 约束只能以与另一列中的值完全匹配的值来验证列值。 CHECK 约束只能根据逻辑表达式或同一表中的另一列来验证列值。如果应用程序要求根据另一个表中的列验证列值,则必须使用触发器。 约束只能通过标准的系统错误信息传递错误信息。如果应用程序要求使用(或能从中获益)自定义信息和较为复杂的错误处理,则必须使用触发器。 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。 触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。当更改外键且新值与主键不匹配时,此类触发器就可能发生作用。例如,可以在 titleauthor.title_id 上创建一个插入触发器,使它在新值与 titles.title_id 中的某个值不匹配时回滚一个插入。不过,通常使用 FOREIGN KEY 来达到这个目的。 如果触发器表上存在约束,则在 INSTEAD OF 触发器执行后但在 AFTER 触发器执行前检查这些约束。如果约束破坏,则回滚 INSTEAD OF 触发器操作并且不执行 AFTER 触发器。 触发器到底可不可以在视图上创建 在 SQL Server64 联机丛书中,是没有说触发器不能在视图上创建的, 并且在语法解释中表明: 在CREATE TRIGGER 的 ON 之后可以是视图。 然而,事实似乎并不是如此,很多专家也说触发器不能在视图上创建。我也专门作了测试,的确如此,不管是普通视图还是索引视图,都无法在上面创建触发器,真的是这样吗?请点击详细,但是无可厚非的是:当在临时表或系统表上创建触发器时会遭到拒绝。 深刻理解 FOR CREATE TRIGGER 语句的 FOR 关键字之后可以跟 INSERT、UPDATE、DELETE 中的一个或多个,也就是说在其它情况下是不会触发触发器的, 包括 SELECT、TRUNCATE、WRITETEXT、UPDATETEXT。相关内容 一个有趣的应用我们看到许多注册系统在注册后都不能更改用户名,但这多半是由应用程序决定的, 如果直接打开数据库表进行更改,同样可以更改其用户名, 在触发器中利用回滚就可以巧妙地实现无法更改用户名……详细内容 触发器内部语句出错时…… 这种情况下,前面对数据更改操作将会无效。举个例子,在表中插入数据时触发触发器,而触发器内部此时发生了运行时错误,那么将返回一个错误值,并且拒绝刚才的数据插入。不能在触发器中使用的语句 触发器中可以使用大多数 T-SQL 语句,但如下一些语句是不能在触发器中使用的。 CREATE 语句,如:CREATE DATABASE、CREATE TABLE、CREATE INDEX 等。 ALTER 语句,如:ALTER DATABASE、ALTER TABLE、ALTER INDEX 等。 DROP 语句,如:DROP DATABASE、DROP TABLE、DROP INDEX 等。 DISK 语句,如:DISK INIT、DISK RESIZE。 LOAD 语句,如:LOAD DATABASE、LOAD LOG。 RESTORE 语句,如:RESTORE DATABASE、RESTORE LOG。 RECONFIGURE TRUNCATE TABLE 语句在sybase的触发器中不可使用! 慎用触发器 触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用呢。触发器本身没有过错,但由于我们的滥用会造成数据库及应用程序的维护困难。在数据库操作中,我们可以通过关系、触发器、存储过程、应用程序等来实现数据操作…… 同时规则、约束、缺省值也是保证数据完整性的重要保障。如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程序. 编辑本段|回到顶部 数字电路领域名词 学名“双稳态多谐振荡器(Bistable Multivibrator)”。触发器(Flip Flop)是一种可以存储电路状态的电子元件。最简单的是由两个或非门,两个输入端和两个输出端组成的RS触发器(见图)。复杂一些的有带时钟(CLK)段和D(Data)端,在CLK端为高电平时跟随D端状态,而在CLK端变为低电平的瞬间锁存信号的D触发器。更常用的是两个简单D触发器级联而成的在时钟下跳沿所存信号的边缘D触发器,广泛应用于计数器、运算器、存储器等电子部件。 触发器的类型: 按逻辑功能不同分为:RS触发器、D触发器、JK触发器、T触发器。 按触发方式不同分为:电平触发器、边沿触发器和主从触发器。 按电路结构不同分为:基本RS触发器和钟控触发器。 按存储数据原理不同分为:静态触发器和动态触发器。 按构成触发器的基本器件不同分为:双极型触发器和MOS型触发器。 照明配件 用于高强度气体放电灯(H.I.D)的启动,型号繁多.由于高强度气体放电灯启动时需要一个高电压来使气体电离进入等离子态,因而需要一个高压发生器做为启动器。这就是触发器早期的机械型触发器已经淘汰。现在绝大多数触发器都是使用可控硅或高压触发二极管的电子触发器,常用的型号有:OSRAM 的 CD-7 飞利浦的 SI51 SN58 爱伦的ALK400等2023-07-06 14:51:251
什么是触发器(trigger)? 触发器有什么作用?
触发器是数据库中由一个时间触发的特殊的存储过程,他不是由程序条用也不是手工启动的。触发器的执行可以由对一个表的insert,delete, update等操作来触发,触发器经常用于加强数据的完整性约束和业务规则等等。 触发器可以对其他表进行查询,也可以包含复杂的SQL语句。他么主要用于强制服从复杂的业务规则或者要求。例如可以利用触发器根据客户当前的帐户状态来控制是否允许插入新的订单。 触发器也可以用于强制引用完整性,以便在多个表中添加,删除或者更新数据时,保留这些表之间的关系。 创建触发器的SQL语法: DELIMITER | CREATE TRIGGER `<databaseName`.`<triggerName` < [ BEFORE | AFTER ] < [ INSERT | UPDATE | DELETE ]ON <tableName2023-07-06 14:51:331
基本触发器原理
触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由个事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。触发器的作用触发器有如下作用:可在写入数据表前,强制检验或转换数据。触发器发生错误时,异动的结果会被撤销。部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。可依照特定的情况,替换异动的指令 (INSTEAD OF)。优点触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制用比CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。慎用触发器触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用呢。触发器本身没有过错,但由于我们的滥用会造成数据库及应用程序的维护困难。在数据库操作中,我们可以通过关系、触发器、存储过程、应用程序等来实现数据操作…… 同时规则、约束、缺省值也是保证数据完整性的重要保障。如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程度。2023-07-06 14:51:401
SQL中触发器有什么作用
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。x0dx0a 触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。x0dx0a 触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。x0dx0a触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。x0dx0a SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。x0dx0a 语法为:x0dx0a CREATE TRIGGER ``.``x0dx0a < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >x0dx0a ON [dbo] //dbo代表该表的所有者x0dx0a FOR EACH ROWx0dx0a BEGINx0dx0a --do somethingx0dx0a ENDx0dx0a 触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。x0dx0a 约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性(RI) 则应通过 FOREIGN KEY 约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。x0dx0a CHECK 约束只能根据逻辑表达式或同一表中的另一列来验证列值。如果应用程序要求根据另一个表中的列验证列值,则必须使用触发器。约束只能通过标准的系统错误信息传递错误信息。如果应用程序要求使用(或能从中获益)自定义信息和较为复杂的错误处理,则必须使用触发器。x0dx0a 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。当更改外键且新值与主键不匹配时,此类触发器就可能发生作用。例如,可以在 titleauthor.title_id 上创建一个插入触发器,使它在新值与 titles.title_id 中的某个值不匹配时回滚一个插入。不过,通常使用 FOREIGN KEY 来达到这个目的。x0dx0a 如果触发器表上存在约束,则在 INSTEAD OF 触发器执行后但在 AFTER 触发器执行前检查这些约束。如果约束破坏,则回滚 INSTEAD OF 触发器操作并且不执行 AFTER 触发器。x0dx0a实例1:insert触发器x0dx0acreate trigger tri_insertx0dx0aon studentx0dx0afor insertx0dx0aasx0dx0adeclare @student_id char(10)x0dx0aselect @student_id=s.student_id fromx0dx0astudent s inner join inserted ix0dx0aon s.student_id=i.student_idx0dx0aif @student_id="0000000001"x0dx0abeginx0dx0araiserror("不能插入1的学号!",16,8)x0dx0arollback tranx0dx0aendx0dx0agox0dx0a实例2:update触发器x0dx0acreate trigger tri_updatex0dx0aon studentx0dx0afor updatex0dx0aasx0dx0aif update(student_id)x0dx0abeginx0dx0araiserror("学号不能修改!",16,8)x0dx0arollback tranx0dx0aendx0dx0agox0dx0a实例3:delete触发器示x0dx0acreate trigger tri_deletex0dx0aon studentx0dx0afor deletex0dx0aasx0dx0adeclare @student_id varchar(10)x0dx0aselect @student_id=student_id from deletedx0dx0aif @student_id="admin"x0dx0abeginx0dx0araiserror("错误",16,8)x0dx0arollback tranx0dx0aend2023-07-06 14:51:491
什么是D触发器,有什么用途?
(一)图中输出的Q₁和Q₂波形是根据输入的CP和D端来确定的。D触发器的方程为Qn+1=D,则可以依次得出Q₁和Q₂波形的翻转。触发器具有两个稳定状态,即“0”和“1”,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。D触发器的次态取决于触发前D端的状态,即次态=D。因此,它具有置0、置1两种功能。(二)原理:在SD和RD接至基本RS触发器的输入端,分别是预置和清零端,低电平有效的情况下:D=0,CP为时钟的上升沿,输出Q=0,非Q=1;D=1,CP为时钟的上升沿,输出Q=1,非Q=0;D端输入不确定,CP=0,Q端输出不变,非Q端输出也不变;D端输入不确定,CP=1,Q端输出不变,非Q端输出也不变。扩展资料:D触发器的工作过程:1、CP=0时,与非门G3和G4封锁,其输出Q3=Q4=1,触发器的状态不变。同时,由于Q3至Q5和Q4至Q6的反馈信号将这两个门打开,可接收输入信号D,Q5=D,Q6=Q5非=D非。2、当CP由0变1时触发器翻转。此时G3和G4打开,它们的输入Q3和Q4的状态由G5和G6的输出状态决定。Q3=Q5非=D非,Q4=Q6非=D。由基本RS触发器的逻辑功能可知,Q=Q3非=D。3、触发器翻转后,在CP=1时输入信号被封锁。参考资料来源:百度百科-D触发器2023-07-06 14:51:561
触发器什么时候使用?有什么功能?举个简单的例子说明一下。
触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。 数据库领域名词 触发器可以查询其他表,而且可以包含复杂的 SQL 语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。 触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。 创建触发器的SQL语法 DELIMITER | CREATE TRIGGER `<databaseName>`.`<triggerName>` < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] > ON <tableName> FOR EACH ROW BEGIN --do something END | 触发器的优点 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。 比较触发器与约束 约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性 (RI) 则应通过 FOREIGN KEY 约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。 例如:除非 REFERENCES 子句定义了级联引用操作,否则 FOREIGN KEY 约束只能以与另一列中的值完全匹配的值来验证列值。 CHECK 约束只能根据逻辑表达式或同一表中的另一列来验证列值。如果应用程序要求根据另一个表中的列验证列值,则必须使用触发器。 约束只能通过标准的系统错误信息传递错误信息。如果应用程序要求使用(或能从中获益)自定义信息和较为复杂的错误处理,则必须使用触发器。 触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。 触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。当更改外键且新值与主键不匹配时,此类触发器就可能发生作用。例如,可以在 titleauthor.title_id 上创建一个插入触发器,使它在新值与 titles.title_id 中的某个值不匹配时回滚一个插入。不过,通常使用 FOREIGN KEY 来达到这个目的。 如果触发器表上存在约束,则在 INSTEAD OF 触发器执行后但在 AFTER 触发器执行前检查这些约束。如果约束破坏,则回滚 INSTEAD OF 触发器操作并且不执行 AFTER 触发器。 触发器到底可不可以在视图上创建 在 SQL Server64 联机丛书中,是没有说触发器不能在视图上创建的, 并且在语法解释中表明: 在 CREATE TRIGGER 的 ON 之后可以是视图。 然而,事实似乎并不是如此,很多专家也说触发器不能在视图上创建。我也专门作了测试,的确如此,不管是普通视图还是索引视图,都无法在上面创建触发器,真的是这样吗?请点击详细,但是无可厚非的是:当在临时表或系统表上创建触发器时会遭到拒绝。 深刻理解 FOR CREATE TRIGGER 语句的 FOR 关键字之后可以跟 INSERT、UPDATE、DELETE 中的一个或多个,也就是说在其它情况下是不会触发触发器的, 包括 SELECT、TRUNCATE、WRITETEXT、UPDATETEXT。相关内容 一个有趣的应用我们看到许多注册系统在注册后都不能更改用户名,但这多半是由应用程序决定的, 如果直接打开数据库表进行更改,同样可以更改其用户名, 在触发器中利用回滚就可以巧妙地实现无法更改用户名……详细内容 触发器内部语句出错时…… 这种情况下,前面对数据更改操作将会无效。举个例子,在表中插入数据时触发触发器,而触发器内部此时发生了运行时错误,那么将返回一个错误值,并且拒绝刚才的数据插入。不能在触发器中使用的语句 触发器中可以使用大多数 T-SQL 语句,但如下一些语句是不能在触发器中使用的。 CREATE 语句,如:CREATE DATABASE、CREATE TABLE、CREATE INDEX 等。 ALTER 语句,如:ALTER DATABASE、ALTER TABLE、ALTER INDEX 等。 DROP 语句,如:DROP DATABASE、DROP TABLE、DROP INDEX 等。 DISK 语句,如:DISK INIT、DISK RESIZE。 LOAD 语句,如:LOAD DATABASE、LOAD LOG。 RESTORE 语句,如:RESTORE DATABASE、RESTORE LOG。 RECONFIGURE TRUNCATE TABLE 语句在sybase的触发器中不可使用! 慎用触发器 触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用呢。触发器本身没有过错,但由于我们的滥用会造成数据库及应用程序的维护困难。在数据库操作中,我们可以通过关系、触发器、存储过程、应用程序等来实现数据操作…… 同时规则、约束、缺省值也是保证数据完整性的重要保障。如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程序. [编辑本段]数字电路领域名词 学名“双稳态多谐振荡器(Bistable Multivibrator)”。触发器(Flip Flop)是一种可以存储电路状态的电子元件。最简单的是由两个或非门,两个输入端和两个输出端组成的RS触发器(见图)。复杂一些的有带时钟(CLK)段和D(Data)端,在CLK端为高电平时跟随D端状态,而在CLK端变为低电平的瞬间锁存信号的D触发器。更常用的是两个简单D触发器级联而成的在时钟下跳沿锁存信号的边缘D触发器,广泛应用于计数器、运算器、存储器等电子部件。 触发器的电路结构和逻辑功能: 逻辑功能,是指触发器的次态和现态及输入信号之间在稳态下的逻辑关系。这种逻辑关系可以用特性表、特性方程或状态转换图给出。 根据逻辑功能的不同特点,把触发器分为RS、JK、T、D等几种类型。 电路结构,是指电路中门电路的种类及组合方式。 基本RS触发器、同步RS触发器、主从触发器、边缘触发器等是指电路结构的不同形式。由于电路结构形式的不同,带来了各不相同的动作特点。 同一种逻辑功能的触发器可以用不同的电路结构实现。反过来说,用同一种电路结构形式可以作成不同逻辑功能的触发器。 触发器的类型: 按逻辑功能不同分为:RS触发器、D触发器、JK触发器、T触发器。 按触发方式不同分为:电平触发器、边沿触发器和主从触发器。 按电路结构不同分为:基本RS触发器和钟控触发器。 按存储数据原理不同分为:静态触发器和动态触发器。 按构成触发器的基本器件不同分为:双极型触发器和MOS型触发器。 照明配件 用于高强度气体放电灯(H.I.D)的启动,型号繁多.由于高强度气体放电灯启动时需要一个高电压来使气体电离进入等离子态,因而需要一个高压发生器做为启动器。这就是触发器早期的机械型触发器已经淘汰。现在绝大多数触发器都是使用可控硅或高压触发二极管的电子触发器,常用的型号有:OSRAM 的 CD-7 飞利浦的 SI51 SN58 爱伦的ALK400等2023-07-06 14:52:121