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 DB2索引 DB2序列