- DB2 教程
- 首页
- DB2 - 简介
- DB2 - 服务器安装
- DB2 - 实例
- DB2 - 数据库
- DB2 - 缓冲池
- DB2 - 表空间
- DB2 - 存储组
- DB2 - 模式
- DB2 - 数据类型
- DB2 - 表
- DB2 - 别名
- DB2 - 约束
- DB2 - 索引
- DB2 - 触发器
- DB2 - 序列
- DB2 - 视图
- DB2 与 XML
- DB2 - 备份和恢复
- DB2 - 数据库安全
- DB2 - 角色
- DB2 - LDAP
- DB2 有用资源
- DB2 - 问答
- DB2 - 快速指南
- DB2 - 有用资源
- DB2 - 讨论
DB2 - 触发器
本章描述触发器,其类型,以及触发器的创建和删除。
介绍
触发器是一组动作,这些动作用于响应数据库中指定表上的 INSERT、UPDATE 或 DELETE 操作。触发器一次性存储在数据库中。它们处理数据的治理。它们可以被多个应用程序访问和共享。使用触发器的优点是,如果应用程序需要进行任何更改,则可以在触发器处进行更改;而不是更改每个访问触发器的应用程序。触发器易于维护,并且可以加快应用程序的开发速度。触发器使用 SQL 语句“CREATE TRIGGER”定义。
触发器的类型
触发器有两种类型
1. BEFORE 触发器
它们在任何 SQL 操作之前执行。
2. AFTER 触发器
它们在任何 SQL 操作之后执行。
创建 BEFORE 触发器
让我们看看如何创建一个触发器序列
语法
db2 create sequence <seq_name>
示例:为 shopper.sales1 表创建一个触发器序列
db2 create sequence sales1_seq as int start with 1 increment by 1
语法
db2 create trigger <trigger_name> no cascade before insert on <table_name> referencing new as <table_object> for each row set <table_object>.<col_name>=nextval for <sequence_name>
示例:为 shopper.sales1 表创建触发器以自动插入主键编号
db2 create trigger sales1_trigger no cascade before insert on shopper.sales1 referencing new as obj for each row set obj.id=nextval for sales1_seq
现在尝试插入任何值
db2 insert into shopper.sales1(itemname, qty, price) values('bicks', 100, 24.00)
从表中检索值
让我们看看如何从表中检索值
语法
db2 select * from <tablename>
示例:
db2 select * from shopper.sales1
输出:
ID ITEMNAME QTY ------- ------------ ---------- 3 bicks 100 2 bread 100 2 record(s) selected.
创建 AFTER 触发器
让我们看看如何创建一个 AFTER 触发器
语法
db2 create trigger <trigger_name> no cascade before insert on <table_name> referencing new as <table_object> for each row set <table_object>.<col_name>=nextval for <sequence_name>
示例:[插入和检索值]
db2 create trigger sales1_tri_after after insert on shopper.sales1 for each row mode db2sql begin atomic update shopper.sales1 set price=qty*price; end
输出
//inseting values in shopper.sales1 db2 insert into shopper.sales1(itemname,qty,price) values('chiken',100,124.00) //output ID ITEMNAME QTY PRICE ----- -------------- ----------- ----------- 3 bicks 100 2400.00 4 chiken 100 12400.00 2 bread 100 2400.00 3 record(s) selected.
删除触发器
以下是数据库触发器的删除方法
语法
db2 drop trigger <trigger_name>
示例
db2 drop trigger slaes1_trigger
广告