列举一些比较重要的点,有新增会更新:

1.更新对象本身时使用注意事项:

案例需求:对象ObjA与对象ObjeB,对想ObjA在新增记录时会与ObjB进行匹配,然后更新ObjB的状态与ObjA的状态。

对于以上需求,我们定然需要通过已有的A对象的匹配值作为条件去查询B对象的所有记录,我在编写改代码的时候最终对对象A与B都执行了Update ,使用的是before触发器。

//更新对象A
if(ObjAs.size()>0){update ObjAs;
}
//更新对象B
if(ObjBs.size()>0){update ObjBs;
}

于是乎就报错了,提示无法更新。于是我更换成after触发器,给出了相同的报错信息。于是我就觉得很奇怪,为什么无法更新?

那么问题在于我这里不应该去对对象A再次执行DML操作,于是我查阅了相关资料,发现,before触发器中,可以通过重新赋值直接更新,不需要进行DML操作。于是注释掉 update ObjAs;于是就没有报错了,对象A也可以正常得到更新。

2.对于问题1,如果我将before替换为after,如何更新呢

测试:
更新CustomsDeclaration__c

public static void selfUp(List<CustomsDeclaration__c> newList){List<CustomsDeclaration__c> ccds = new List<CustomsDeclaration__c>();if(Trigger.isUpdate){for(CustomsDeclaration__c cd:newList){cd.Name = 'test2';ccds.add(cd);}update ccds;}}

报错:

更改代码:

    public static void selfUp(List<CustomsDeclaration__c> newList){//List<CustomsDeclaration__c> ccds = new List<CustomsDeclaration__c>();if(Trigger.isUpdate){for(CustomsDeclaration__c cd:newList){cd.Name = 'test2';}}}

将beforeTrigger更改为afterTrigger
执行以上代码,仍然不会报错。
所以Trigger.new 这与Before和after并无关系,只是在Trigger.new中对对象本身是不需要使用DML操作的。

3.避免trigger的触发

可以新建复选框字段CheckBox ,判断TRUE OR FALSE 的方式去控制是否触发Trigger

Trigger触发器常见问题相关推荐

  1. Silverlight实用窍门系列:61.Silverlight中的Trigger触发器,自定义翻页触发器

    在Silverlight应用程序和客户进行交互工作的时候可以不用写后台代码而通过Xaml代码来实现,在本文我们将学习了解Trigger触发器. Trigger触发器:引发动作的因素,比如鼠标点击.键盘 ...

  2. Mysql使用trigger触发器说明

    由于项目中需要使用到触发器个人就开始简单的了解了一下.但是过程中遇到了几个问题,在此记录一下. 前三步先把效果展示出来,后面会对trigger做详细的描述 第一步:创建测试表 CREATE TABLE ...

  3. Trigger触发器_05

    什么是Trigger触发器? 定时任务按照什么方式去执行,按照Trigger设定好的方式去执行.比如说:按照每5秒执行一次 Trigger触发器的公共属性 jobKey属性:当Trigger触发时被执 ...

  4. SQL之trigger触发器

    触发器是一种数据库对象,一般与一个表相关联,当对该表做出某种修改操作(INSERT.DELETE.UPDATE)时,它会自动地予以执行.触发器可以查询其它表,并可以包含复杂的SQL(或Transact ...

  5. 数据库mysql进阶—trigger触发器

    触发器 在实际开发中,我们经常会遇到这样的情况:有两个或者多个相互关联的表,如商品信息和库存信息分别存放在2个不同的数据表中,我们在添加一条新的商品记录的时候,为了保证数据的完整性,必须同时在库存表中 ...

  6. 解决 报错ora-04098: oracle trigger 触发器无效且未通过重新验证

    解决 报错ora-04098: oracle trigger 触发器无效且未通过重新验证 在开发过程中 本人遇到以下报错信息: 1. 2. [SQL]select TB_REPORT_KIND_id. ...

  7. mysql触发器如果某个字段被修改_mysql trigger触发器 一张表一个字段改变 更新另一张表对应字段...

    触发器语句先贴出来: DELIMITER $$ CREATE TRIGGER goods_sku_shopprice_trigger AFTER UPDATE ON t_sku FOR EACH RO ...

  8. trigger 触发器(mysql)

    /* 触发器 tigger 引出触发器:在进行数据库应用软件的开发的时候,我们有时候会碰到表中的某些数据改变,同事希望引起其他相关数据改变的需求,这时候就需要使用触发器.运用触发器可以简化程序,增加程 ...

  9. 数据库CREATE TRIGGER 触发器

    CREATE TRIGGER 创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行.Microsoft® SQL Server™ 允许为任何给定的 INSERT ...

最新文章

  1. mac编译openresty报Undefined symbols for architecture x86_64
  2. c++入门之 再话类
  3. Ubuntu16.04 搭建SVN服务器(建立版本仓及import和checkout代码)
  4. Nginx静态资源压缩实战内容介绍
  5. 如何理解Mysql的索引及他们的原理--------二叉查找树和平衡二叉树和B树和B+树
  6. 64位linux并行计算大气模型效率优化研究,64位Linux并行计算大气模型效率优化研究...
  7. 超值一篇分享,Docker:从入门到实战过程全记录
  8. CSS基本知识之盒子模型
  9. Jmeter学习(一)
  10. 正则表达式3-兄弟的回复
  11. Spring揭秘——什么是IOC和DI
  12. DynamipsGUI使用方法
  13. QT实现低延迟的RTSP、RTMP播放器
  14. 安川机器人原点丢失_安川机器人报错代码:原点位置校准和操作方法
  15. 怎样更改计算机ip,怎样修改电脑IP地址?
  16. Postman下载使用
  17. 爬虫精进(六) ------ 项目实操
  18. 程序员转行后都怎么样了,分享我身边的真实经历!
  19. 2019美团点评笔试编程题(A~Z美团骑手)
  20. 网络舆情数据分析系统技术方案

热门文章

  1. Eclipse知识点精粹
  2. Elasticsearch实战-实现Hotel索引库的自动补全、拼音搜索功能
  3. 它听键盘声就知道你敲的是什么——GitHub 热点速览 Vol.51
  4. Yii2 用户登录
  5. Python中语音播报的应用(简单版)
  6. 实验!实验!还是实验!
  7. 惊爆!重大秘密破解!宇宙,大脑,信息,三者之间存在惊天奥秘。道翰天琼认知智能三体论。
  8. 航空摄影测量中yaw,pitch,roll
  9. 帝国cms灵动标签调用当前栏目下所有子栏目链接,子栏目名称,子栏目图片
  10. fastapi python_fastapi安装及访问页面