第一:触发器(trigger)
触发器(trigger)是指隐含执行的存储过程procedure,当定义触发器时必须要指定触发事件和触发的操作,通常触发事件包括insert,update,delete语句,触发器实际上就是一个pl/sql(procedure language/Structured Query Language).create trigger来创建触发器;
第二:触发器的作用;
a.允许/限制对表的修改
b.自动派生列,如自增字段
c.强制数据的一致性
d.提供审计和日志记录
e.防止无效的事务处理
f.启动复杂的业务逻辑
第三:触发器的语法;
create or replace trigger temp_trigger ---定义一个触发器 temp_trigger
after|before|instead of ---指定触发时机和触发类型
insert|update|delete ---指定触发事件
of columns_name on table_name ---of & on 监控的表单和表列
referencing
old as old_value
new as new_value
for each row|for each statement ---指定触发次数(行和语句)
begin
codes
end;
instead of 是一种单独的出发机制,用来管理和执行view类型的数据表单
of &on 监控关键字 of 可以省区,on是必须留下的
第四:例子instance
a:创建一个行触发器 tri
create or replace trigger tri ---trigger tri
before insert or update on employee
referencing old as old_value
new as new_value
for each row
when(new_value.empid<>'14') ---当插入的empid不等于14
begin
:new_value.salary:=2001; ---将插入的的salary更改成2001
end;
触发事件:
insert into employee values(emp_seq.nextval,'Janney',10,'1'); ---插入一条数据
update employee set employee.empname='Alex' where employee.empid='12'; --根新empid=15的数据
结果:
分析:
对比发现,无论你修改或增加数据只要empid!=14,salary都固定在2001。
b:创建一个语句触发器
创建一表单 idiot
create table idiot(
i_id varchar2(255) primary key,
i_name varchar2(255),
i_add varchar2(255)
)
创建触发器 tri_idiot
create or replace trigger tri_idiot
before update or insert on idiot
begin
if user not in ('hjd') then
Raise_application_error(-20001,'You don’t have access to modify this table.');
end if;
end;
触发事件
insert into idiot values(idi_seq.nextval,'daniel','武汉');
insert into idiot values(idi_seq.nextval,'justin','武汉');
insert into idiot values(idi_seq.nextval,'alex','南昌');
结果:
(在非hjd的用户下执行)
此处的trigger是控制权限的
c:创建一个触发器log修改操作人员和时间和行为
---复制一张表格 命名为tem_employee 为操作的表格--
create table tem_employee as select * from employee
--创建一张 tem_employee_log记录变化--
create table tem_employee_log(
l_who varchar2(50),
l_when date
)
---增加一column---
alter table tem_employee_log add(action varchar2(20));
创建触发器 tri
create or replace trigger tri
before insert or update or delate on temp_employee
declare -----声明一变量
l_action tem_employee_log.action%type;
begin
if inserting then l_action:='insert';
elsif updating then l_action:='update'; --此处用elsif
elsif deleting then l_action:='delete';
else raise_application_error(-20001,'You should never ever get this error.');
end if;
insert into tem_employee_log values(user,sysdate,l_action);
end;
触发语句
delete from tem_employee where tem_employee.empid='4';
结果:
- 大小: 19.7 KB
- 大小: 23.1 KB
- 大小: 9.6 KB
- 大小: 14.6 KB
- 大小: 7.2 KB
分享到:
相关推荐
触发器是一种存储过程,它允许用户定义响应特定事件(如插入、更新或删除记录)时自动执行的操作。通过触发器,开发人员能够确保数据库完整性,实现复杂的业务逻辑,并监控数据变化。 #### 触发器基本语法及组成...
本文将深入探讨这两个概念,以及如何在实际环境中定义和使用它们。 首先,存储过程是一种预编译的SQL语句集合,它可以封装一系列的数据库操作,并作为一个单元进行调用。存储过程有以下优点: 1. **提高性能**:...
GBase 8s 触发器介绍 GBase 8s 触发器是一种存储过程,可以在进行 DML/DQL 操作时自动执行相应的语句。触发器可以用于维护多...在修改触发器时,需要注意触发器的名称、触发事件、目标表、触发时间和触发条件等信息。
总的来说,Go-trigger作为Golang的全局事件触发器,提供了一种高效且灵活的方式来管理和触发事件。它促进了代码的解耦,提高了模块间的协作效率,同时也降低了系统复杂性。对于任何需要处理异步事件或构建事件驱动...
在Spring配置文件中,我们需要定义`JobDetail`和`Trigger`。`JobDetail`定义了具体的任务,包括任务类名、任务参数等;`Trigger`则定义了任务的执行策略。例如: ```xml * * * ?"/> ``` 在上述...
INSTEAD OF 触发器将在数据变动以前被触发,并取代变动数据的操作,而去执行触发器定义的操作。 触发器的创建和使用 创建触发器需要使用 CREATE TRIGGER 语句,并指定触发器的名称、类型和执行的 SQL 语句。例如:...
例如,`display trigger`命令用于查看当前的触发器设置,`set trigger`用于修改触发器参数,而`remove trigger`则用于删除不再需要的触发器。 总之,IBM WebSphere MQ的触发器功能提供了一种强大的机制,能够在消息...
这些实例展示了如何根据不同的操作类型(INSERT、UPDATE、DELETE)和时间点(BEFORE、AFTER)来定义触发器,并通过`new`和`old`关键字访问新旧值,实现数据同步。 **注意事项** - 一个表上的相同事件不能有两个...
此触发器的作用是在更新`CheckingBalance`字段时检查是否会导致余额为负,如果会,则回滚该操作,避免过账。 ### 触发器注意事项 - **权限问题**:创建触发器的用户必须具有相应的权限,通常是数据库管理员。 - **...
触发器常用于增强数据的完整性约束和实施复杂的业务规则。 创建触发器的SQL语法如下: ```sql DELIMITER | CREATE TRIGGER `<databaseName>`.`<triggerName>` [BEFORE | AFTER] [INSERT | UPDATE | DELETE] ON `...
在Oracle中,查看、编辑、重命名和删除触发器同样使用类似的操作,如`SELECT * FROM USER_TRIGGERS`来查看触发器,`ALTER TRIGGER`用于编辑,`RENAME TRIGGER`用于重命名,`DROP TRIGGER`用于删除。 通过学习和掌握...
- **DDL事件触发器**:这类触发器是在数据定义语言(Data Definition Language, DDL)事件发生时被激活的,例如`CREATE`(创建)、`ALTER`(修改)和`DROP`(删除)数据库对象的操作。 - **数据库事件触发器**:这类...
触发器的定义可以存储在数据目录下的特定数据库和表文件夹中,如 `/data_folder/database_name/table_name.trg`。此外,也可以通过查询`information_schema`数据库中的`triggers`表来查看触发器的相关信息,包括...
触发器的定义 触发器是数据库系统中的一种机制,它可以在数据库中自动执行某些操作,以维护数据的一致性和安全性。触发器可以在数据库中执行各种操作,如insert、update、delete等。 触发器的原理 触发器的原理是...
在SQL 200n标准中,触发器是与某一基表相关联的对象,其语法定义如下:<触发器定义> ::= CREATE TRIGGER <触发器名称> <触发动作时间><触发器体>。触发器的执行模型分为三个阶段:事件检测、触发器执行和触发器结束...
编写触发器时,为了更好地维护和调试,通常建议使用分隔符(`DELIMITER`)来定义PL/SQL代码块的开始和结束,使得触发器定义在数据库中更加清晰。 触发器的应用实例在给定内容中提及了对员工表(employees)和部门ID...
总之,触发器和用户定义函数是数据库管理系统中两个强大的特性,它们能够显著增强数据库的功能性和灵活性,帮助开发者实现复杂的数据处理和管理需求。无论是确保数据一致性,还是扩展数据库的能力以满足特定的应用...
- `trigger_event` 定义触发触发器的具体事件,可以是 `INSERT`、`UPDATE` 或 `DELETE`。 - `tbl_name` 是触发器关联的表名,必须是永久性表,不能是临时表或视图。 - `trigger_stmt` 是触发器执行的SQL语句,可以是...
RS触发器,全称为Reset Set Trigger,是数字电子技术中的基本存储元件,具有记忆功能,能够存储一位二进制数据。它由逻辑门电路组成,能够保持稳定状态,直到受到特定输入信号的影响才会改变状态。RS触发器有两个...