首页 > 数据库 >数据库

数据库

时间:2023-02-06 13:23:53浏览次数:44  
标签:语句 触发器 varchar 数据库 trigger table 255

一、触发器

1.什么是触发器(trigger)

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。

触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。

触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。

触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。

此外触发器是逻辑电路的基本单元电路,具有记忆功能,可用于二进制数据储存,记忆信息等。

 

2.触发器4个基本组成:

(1)触发事件:即在什么事件发生时触发,常见事件如 insert  ,update,delete;

(2)触发时间:这里的时间是相对于事件发生前后来说的,可以定义在事件发生之前和事件发生之后 before | after

(3)触发器本身:这是关键,也就是我们为什么要创建这个触发器,要用它做什么,触发器的主体,一段pl/sql程序块

(4)触发器频率:说明触发器内,在事件发生时,触发的频率,常见有语句级触发器和行级触发器,语句级就是该条语句执行一次,触发器触发一次,而行级触发器则是每操作一行就执行一次触发器,定义时需要添加(for each row)

 

3.触发器的语法:

CREATE [OR REPLACE] TRIGGER trigger_name

{BEFORE| AFTER}

{INSERT| UPDATE| DELETE}

ON table_name

[FOR EACH ROW]

[WHERE CONDITION]

BEGIN

  执行体;

END;

4.触发器的应用

第一步:创建操作目标表t_target_table

Create table t_target_table(

id varchar(255),

account varchar(255),

pwd varchar(255),

name varchar(255));

第二步:创建操作记录日志表t_record_log

Create tablet_record_log(

id varchar(255),

Target_idvarchar(255),

Target_pwd varchar(255),

Opration varchar(255),

Date date);

第三步:创建触发器t_trigger

注意:声明的s变量将会被赋值为if语句中的s的值并插入记录表中

触发器实例一:

create or replace TRIGGER t_trigger after insert or update or delete on t_target_table

 DECLARE s t_record_log.opration %type;

 begin

  if inserting then

 s:= '添加操作';

  elseif inserting then

 s:= '删除操作';

elseif inserting then

 s:= '修改操作';

  end if ;

insert into t_record_log values(user,s,to_char(SYSDATE(),'yyyy-mm-dd hh mm ss'));

end;

触发器实例二:

 

 

标签:语句,触发器,varchar,数据库,trigger,table,255
From: https://www.cnblogs.com/wanyuy/p/17095104.html

相关文章