返回介绍

DB2 触发器 - DB2 教程

发布于 2025-02-22 13:46:35 字数 2814 浏览 0 评论 0 收藏 0

本章介绍触发器,它们的类型,创建和删除触发器。

触发器是一组动作,在数据库响应 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文