码迷,mamicode.com
首页 > 数据库 > 详细

达梦数据库的触发器管理

时间:2020-01-01 09:45:17      阅读:389      评论:0      收藏:0      [点我收藏+]

标签:count   特定   inf   4条   的区别   varchar   before   res   管理   

达梦数据库的触发器管理

触发器类型有分为操作前触发、操作后触发、DLL事件触发、系统事件触发、时间触发等等,触发器与存储过程的区别是触发器不能单独执行调用,而是在用户执行特定语句时自动触发执行触发器。以下举例常见的插入事件、更新事件做演示。

1、创建BEFORE触发器测试
准备工作
创建触发器前先建两张测试表(数据表和结果表),目的在数据表插入前就执行触发器里的语句,触发器里的语句是统计当前数据库的记录数。
create table tab_before(id int, name varchar(20));
insert into tab_before values(1,‘aaa‘);
insert into tab_before values(2,‘bbb‘);
insert into tab_before values(3,‘bbb‘);

create table tab_before_result (type varchar(20),num int);
技术图片

创建触发器
create or replace trigger trigger_before
before insert on tab_before
begin
insert into tab_before_result select ‘before‘,count(*) from tab_before;
end;
/
技术图片

测试验证
插入一条数据测试,看看是不是统计插入前的记录数
insert into tab_before values(4,‘bbb‘);

查看的结果是只有3条初始化的记录,第4条插入的记录未统计。
select * from tab_before_result;
技术图片

2、创建AFTER触发器测试
准备工作
创建触发器前同样也先建两张测试表(数据表和结果表),目的是在数据表插入后执行触发器里的语句,触发器里的语句是统计当前最新数据库的记录数。
create table tab_after(id int, name varchar(20));
insert into tab_after values(1,‘aaa‘);
insert into tab_after values(2,‘bbb‘);
insert into tab_after values(3,‘bbb‘);

create table tab_after_result (type varchar(20),num int);
技术图片

创建触发器
create or replace trigger trigger_after
after insert on tab_after
begin
insert into tab_after_result select ‘after‘,count(*) from tab_after;
end;
/
技术图片

测试验证
插入一条数据测试,看看是不是统计插入后的记录数
insert into tab_after values(4,‘bbb‘);

查看的结果是统计最新的4条初始化的记录,包含了第4条插入的记录。
select * from tab_after_result;
技术图片

3、创建DLL事件触发器测试
准备工作
创建触发器前先建两张测试表(数据表和结果表),当数据库发生DDL语句操作时会执行触发器里的语句内容。
测试1:在数据表插入记录,看是否会执行触发器里的语句。
目的2:创建一张新表看结果表发生的变化,看是否会执行触发器里的语句。
create table tab_ddl(id int, name varchar(20));
create table tab_ddl_result (type varchar(20),num int);
技术图片

创建触发器
create or replace trigger trigger_ddl
before create
on schema
begin
insert into tab_ddl_result select ‘ddl‘,count(*) from tab_ddl;
end;
/
技术图片

测试验证
插入一条数据测试,结果是没有执行触发器
insert into tab_ddl values(1,‘aaa‘);
技术图片

创建一张表测试,结果是执行了触发器里的语句
create table tab_ddl2(id int, name varchar(20));
技术图片

达梦数据库的触发器管理

标签:count   特定   inf   4条   的区别   varchar   before   res   管理   

原文地址:https://blog.51cto.com/14615334/2463426

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!