GBase 8s触发存储过程示例

GBase 8s的触发器不支持raise exception,条件判断等存储过程中可以使用的功能,若有需求,可以使用触发存储过程的功能。
以下以insert触发器为示例,创建触发存储过程:
1,创建相应的表

create table tab1
  (
    id integer,
    name varchar(40),
    primary key (id)
  ) ;

create table tab2
  (
    id integer,
    name varchar(40),
    uptime datetime year to second
        default current year to second
  ) ;


2,创建触发存储过程中的存储过程

create procedure proc_tri_insert_tab1()
referencing new as new for tab1;
  define pid int;
  select count(id) into pid from tab2 where id = new.id;
  if pid = 1 then
    raise exception -746,0,'ID exists!';
  end if;
end procedure;

3,创建触发存储过程中的触发器

create trigger tri_insert_tab1 insert on tab1
for each row(
  execute procedure proc_tri_insert_tab1() with trigger references
);

当表tab1插入时,触发存储过程执行,当符合插入的id存在于tab2中时,raise exception。

> insert into tab1  values(2,'testssdadsfas');

  746: ID exists!
错误在 1 行
第 1 字符

标签: gbase 8s, 存储过程, 触发存储过程, 触发器

添加新评论