GBase 8s触发存储过程示例
GBase 8s的触发器不支持raise exception,条件判断等存储过程中可以使用的功能,若有需求,可以使用触发存储过程的功能。
以下以insert触发器为示例,创建触发存储过程:
1,创建相应的表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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,创建触发存储过程中的存储过程
1 2 3 4 5 6 7 8 | 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,创建触发存储过程中的触发器
1 2 3 4 | 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。
1 2 3 4 5 | > insert into tab1 values(2,'testssdadsfas'); 746: ID exists! 错误在 1 行 第 1 字符 |
- 上一篇: GBase 8s使用内部用户
- 下一篇: merge into的字段限制