達夢數據庫的觸發器管理

達夢數據庫的觸發器管理

觸發器類型有分爲操做前觸發、操做後觸發、DLL事件觸發、系統事件觸發、時間觸發等等,觸發器與存儲過程的區別是觸發器不能單獨執行調用,而是在用戶執行特定語句時自動觸發執行觸發器。如下舉例常見的插入事件、更新事件作演示。數據庫

一、建立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');ide

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');it

查看的結果是隻有3條初始化的記錄,第4條插入的記錄未統計。
select * from tab_before_result;
達夢數據庫的觸發器管理table

二、建立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');class

create table tab_after_result (type varchar(20),num int);
達夢數據庫的觸發器管理select

建立觸發器
create or replace trigger trigger_after
after insert on tab_after
begin
insert into tab_after_result select 'after',count(*) from tab_after;
end;
/
達夢數據庫的觸發器管理im

測試驗證
插入一條數據測試,看看是否是統計插入後的記錄數
insert into tab_after values(4,'bbb');統計

查看的結果是統計最新的4條初始化的記錄,包含了第4條插入的記錄。
select * from tab_after_result;
達夢數據庫的觸發器管理

三、建立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));
達夢數據庫的觸發器管理

相關文章
相關標籤/搜索