当前位置: 首页 > wzjs >正文

南漳网站设计开发网站比较好的公司

南漳网站设计,开发网站比较好的公司,.net网站开发文档,wordpress 页面触发器创建位置 表 、视图 触发事件 insert select update delete 触发时机 before 、alter 、for each row 触发动作列表 insert select update delete 触发作用域 语句级、行级 触发器状态 enable disable 说明 before after 均为 语句级触发器,即触…

触发器创建位置

表 、视图

触发事件

insert select update delete

触发时机

before 、alter 、for each row

触发动作列表

insert select update delete

触发作用域

语句级、行级

触发器状态

enable disable

说明

before after 均为 语句级触发器,即触发列表动作只执行一次

before after 因为是语句级触发器,没有 new值 old值的说法

在触发列表中不支持条件判断变量定义等操作,需要使用存储过程

在触发列表中不支持 抛出异常或者处理异常,需要使用存储过程

例如

create table t1(c1 int ,c2 varchar(10));
create table t_cont(c1 int);create trigger t_before insert on t1
before (
insert into t_cont select count(1) from t1
);
在插入之前统计该表的总行数

当有一些判断逻辑时可以在触发列表中调用存储过程实现

例如

drop table if exists t1;
drop table if exists t_cont;
create table t1(c1 int ,c2 varchar(10));
create table t_cont(c1 int);
create procedure p1()
define i,j int;
let i=90;
let j=(select count(1) as cnt from systables where 1=1);
if i < j then
insert into t_cont values(j);
end if
end procedure;create trigger t_before insert on t1
before (
execute procedure p1()
);

after与before使用上逻辑一样

for each row 触发器

for each row 为行级触发器,即每一行都会触发触发列表的操作

在使用中一般需要获取到 new old值

例如 ,将插入的数据触发插入到另一张表

drop table if exists t1;
drop table if exists t2;
create table t1(c1 int);
create table t2(c1 int);
drop trigger if exists trri1;
create trigger  trri1 insert on t1 referencing NEW AS new 
FOR EACH ROW(
insert into t2 values(new.c1)
);

同样,当需要处理逻辑时,仍然需要调用存储过程来实现

在创建存储过程中需要额外使用referencing NEW AS new /old as old来引用新旧值

例如

drop table if exists t1;
drop table if exists t2;
create table t1(c1 int);
create table t2(c1 int);
drop trigger if exists trri1;
drop procedure if exists p1;create procedure p1() REFERENCING NEW AS NEW for t1
IF new.c1 = 1 THEN
raise exception -746 ,0,'Error: this is error';
END IF;
end procedure;create trigger  trri1 insert on t1 referencing NEW AS new 
FOR EACH ROW(
execute procedure p1() with trigger references
);

在 gbase8s规则中

delete select 操作 只有old

insert 操作只有new

update 操作同时存在 old new

相比oracle 在for each row 触发时 是没有 before 或者after 修饰,也就是说在gbase8s中for each row没有触发前后的说法,仍然可以通过一些用例简单测试下触发时机

drop table if exists t1;
drop table if exists t2;
create table t1(c1 int);
create table t2(c1 int);
drop trigger if exists trri1;
create trigger  trri1 insert on t1 referencing NEW AS new 
FOR EACH ROW(
insert into t2 select count(1) as cnt from t1
);
查询t2 时 结果为1 

可见测试结果触发时机更倾向于 after

或者

drop table if exists t3;
drop table if exists t4;
create table t3(c1 int ,c2 datetime year to second);
create table t4(c1 int ,c2 datetime year to second);drop procedure if exists p2;
create procedure p2()
define dt1 datetime year to second;
system 'sleep 10';
select DBINFO('utc_to_datetime',sh_curtime)  into dt1 from sysmaster:sysshmvals;
insert into t4 values(1,dt1);
end procedure;create trigger  trri6 insert on t3
FOR EACH ROW (
execute procedure p2()
);

在另一session开启脏读的情况下观察t3 t4表数据

结果为 t3先插入数据,十秒后t4插入数据

可见触发时机更倾向于after 触发

在实际使用中可同时存在before、after、以及for each row 触发器,顺序必须为

before、for each row、 after

例如

create trigger  trri1 insert on tab1 referencing NEW AS new 
before (
insert into tab2 values(1)
)
FOR EACH ROW (
insert into tab3 values(new.c1)
)
after (
insert into tab4 values(1)
);

多个触发器的触发顺序

CREATE TABLE taba (a INT, b INT, c INT, d INT);

假设在列 a 和 c 上定义 trig1,在列 b 和 d 上定义 trig2 。如果两个触发器都指定BEFORE 、FOR EACH ROW 和 AFTER 操作,则按以下顺序执行触发器操作:

  1. 触发器的 BEFORE 操作列表(a 、 c
  2. 触发器的 BEFORE 操作列表(b 、d
  3. 触发器的 FOR EACH ROW 操作列表(a 、c
  4. 触发器的 FOR EACH ROW 操作列表(b d
  5. 触发器的 AFTER 操作列表(a 、 c
  6. 触发器的 AFTER 操作列表(b 、 d
http://www.dtcms.com/wzjs/795872.html

相关文章:

  • 海口网站制作价格360兼容模式网站错位
  • 专业网站建设价格分析中国空间站航天员
  • 网站服务器租用年度价格电商营销
  • 手机网站建设的公司排名wordpress社交系统
  • 微信公司网站做购物网站怎么写开题报告
  • word做网站连接怎样增加网站收录量
  • 北京专业做网站的营销类网站有哪些
  • 营销网站建设的步骤网站流量排名查询
  • 网站外链建设可以提升网站安阳县高级中学
  • 璧山网站建设中国建设银行网站口
  • 网站推广的四个阶段做系统去哪个网站
  • 济南品牌网站建设定制wordpress主题配置文件
  • 零售户订烟电商网站罗湖福田app网站开发
  • 专门型网站深圳专业网站设计制作
  • 网站建设能做什么工作长沙专业做网站
  • 知名网站制作公简单的手机网页制作
  • 艺术家个人网站设计重庆电子工程职业学院校园网
  • 有专门做几口农机的网站做违法网站程序员犯法吗
  • 个人备案能做公司网站吗wordpress 固定链接 插件
  • 网站备案企业用个人来备案可以用吗关于网站的毕业设计
  • 上海网站开发公司哪家好网站建设自学网
  • 制作企业网站怎么报价北京vi设计哪家公司好
  • 湖北seo网站多少钱药监局网站建设方案
  • 淘宝联盟网站备案全球电子元器件采购平台
  • 网站前端语言帮忙做网站
  • 手机网站免费建设平台合肥seo网络优化公司
  • 网站建设需要注意的问题中亿丰建设集团股份有限公司官方网站
  • 设计网站建设价格WordPress登录界面个性化
  • 重庆网站设计软件网络营销具有哪些优势和吸引力
  • 重庆网站设计生产厂家wordpress 地址跳转