数据库教程-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   

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 db2教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/27/数据库教程-db2触发器/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注