触发器:能够存储一个“0”或“1”的根本存储单元电路。
结构示意图
根本性质:
1、具有两个安稳的状况,别离用二进制数码1和0表明。
2、由一个稳态到另一个稳态,有必要有外界信号的触发;不然,它将长时间安稳在某个状况,即能够长时间保持所回忆的信息。
3、具有两个输出端,并且互反。假如外界信号使,则破坏了触发器的状况,这种信号在实际运用时是不答应呈现的。
分类:RS触发器 JK触发器 D触发器 T触发器等
触发器及触发器的效果
触发器是一种用来确保参照完整性的特别的存储进程,它保护不同表中数据间联系的有关规矩。当对指定的表进行某种特定操作(如:Insert,Delete或Update)时,触发器发收效果。触发器能够调用存储进程。
创立触发器的语法:
Create Trigger[owner.]触发器名
On [owner.]表名
For {insert,update,delete}
As
Begin
SQL句子(块)
End
界说一个好的触发器对简化数据的办理,确保数据库的安全都有重要的影响。触发器是针对表一级的,这就意味着,只要表的一切者有权创立表的触发器。
举例:
/* 刺进一个新行,有必要确保外键与主键相匹配,触发器应该首要查看被刺进行与主键表的衔接。*/
#以下的触发器对inserted表和titles表的TItle_id进行比较,这儿假定正在给外键输入数据,没有刺进空值,若衔接失利,事务被回退。insert,update,delete
Create trigger forinsertrigl
On salesdetail
For insert
As
If(select count(*)
From TItle,inserted
Where TItles.TItle_id=inserted.title_id)!=@@rowcount
Begin
Rollback transaction
Print “No,some title_id does not exist in titles.”
End
Else
Print “Added! All the title_id is exist in titles.”
/*
在本例中,@@rowcount代表增加到salesdetail表的行数,这也是增加到inserted表中的行数。经过衔接表titles和表inserted来检测一切增加到salesdetail的title_id是否在titles中存在。若所衔接的行数(count(*))与@@rowcount不同,由有一个或多个刺进不正确,整个事务被撤销。*/
触发器的束缚:
●一个表最多只能有三个触发器,insert,update,delete
●每个触发器只能用于一个表
●不能对视图、暂时表创立触发器
●Truncate table能删去表,但不能触发触发器
●不能将触发器用于体系表
合理地运用触发器对功能的影响是正面的。在规划和运用触发器时,经常地用sp_depends指令了解目标所相关的触发器是有长处的,该指令能列出触发器影响的一切目标、表和视等。
在界说几类数据库目标的时分,对存储进程、索引和触发器要给予特别的留意,特别存储进程,它规划的好坏对数据库功能的影响很大。
阐明:Sybase触发器运用的两个测验表:Deleted表和Inserted表,它们都是暂时表,其结构与触发器的基表结构相同,用来寄存与修正相关的数据行。
常见的触发器有三种:别离运用于Insert,Update,Delete事情。
运用触发器的长处
触发器是主动的:它们在对表的数据作了任何修正(比方手艺输入或许运用程序采纳的操作)之后立即被激活。
触发器能够经过数据库中的相关表进行层叠更改。例如,能够在 titles 表的 title_id 列上写入一个删去触发器,以使其它表中的各匹配行采纳删去操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。
触发器能够强制束缚,这些束缚比用 CHECK 束缚所界说的更杂乱。与 CHECK 束缚不同的是,触发器能够引证其它表中的列。例如,触发器能够回滚企图对价格低于 10 美元的书(存储在 titles 表中)运用扣头。《/p《 /》
数据库中的触发器是用来做什么的?
触发器是一种特别类型的存储进程,当运用下面的一种或多种数据修正操作在指定表中对数据进行修正时,触发器会收效:UPDATE、INSERT 或 DELETE。触发器能够查询其它表,并且能够包括杂乱的 SQL 句子。它们首要用于强制杂乱的事务规矩或要求。例如,能够操控是否答应根据顾客的当时帐户状况刺进定单。
触发器还有助于强制引证完整性,以便在增加、更新或删去表中的行时保存表之间已界说的联系。但是,强制引证完整性的最好办法是在相关表中界说主键和外键束缚。假如运用数据库联系图,则能够在表之间创立联系以主动创立外键束缚。有关详细信息,请参见表联系。
运用触发器的长处
触发器的长处如下:
触发器是主动的:它们在对表的数据作了任何修正(比方手艺输入或许运用程序采纳的操作)之后立即被激活。
触发器能够经过数据库中的相关表进行层叠更改。例如,能够在 titles 表的 title_id 列上写入一个删去触发器,以使其它表中的各匹配行采纳删去操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。
触发器能够强制束缚,这些束缚比用 CHECK 束缚所界说的更杂乱。与 CHECK 束缚不同的是,触发器能够引证其它表中的列。例如,触发器能够回滚企图对价格低于 10 美元的书(存储在 titles 表中)运用扣头