我有一个apex触发器(在插入/更新之前)和该触发器的助手类。问题是:在创建对象记录时,触发器应检查AddedDate字段是否已填充,如果未填充,则为其指定今天的日期和当前时间。
当我创建和更新产品对象记录时,触发器必须检查描述字段的长度,如果字段超过200个字符,我必须将其修剪为197个字符,并在行的末尾添加一个三元组。我做错了什么?我应该如何继续?
我的触发器:
trigger ProductTrigger on Product__c (before insert, before update) {
if(Trigger.isUpdate && Trigger.isAfter){
ProductTriggerHelper.producthandler(Trigger.new);
}
}
触发器帮助器类:
public class ProductTriggerHelper {
public static void producthandler(List<Product__c> products) {
Schema.DescribeFieldResult F = Product__c.Description__c.getDescribe();
Integer lengthOfField = F.getLength();
//List<Product__c> prList = new list<Product__c>();
for(Product__c pr: products){
pr.AddedDate__c=system.today();
if (String.isNotEmpty(pr.Description__c)) {
pr.Description__c = pr.Description__c.abbreviate(lengthOfField);
}
}
}
}
要添加到程序的答案。。。
您将触发器定义为插入之前、更新之前。酷,那是做数据验证、字段预填充的完美地方。。。您可以免费保存到数据库!
但是这与下一行发生冲突if(Trigger.is更新
P、 是datetime字段?So
pr.AddedDate\uu c=系统。现在()
更好
根据您的要求
创建对象记录时,触发器应检查AddedDate字段是否已填充,如果未填充,则为其分配今天的日期和当前时间。
你不能这么做。
更改pr.AddedDate\uu c=系统。今天()
至
if(pr.AddedDate__c==null){pr.AddedDate__c=system.today (); }
此外,根据缩写函数文档,它采用的参数是最大长度,包括3个省略号。
所以改变
pr.Description__c=pr. Description__c.abbreviate(长度OfField);
到
pr.Description__c=pr. Description__c.abbreviate(200);
主要内容:基本语法,创建 BEFORE 类型触发器,创建 AFTER 类型触发器触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 基本语法 在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <
进入函数详情页,点击“触发器”标签,展示当前函数配置的触发器,点击“创建新触发器”,选择HttpTrigger,填写对应信息。 路径映射必须以“/”开头,可以选择以GET或POST方法触发函数。 创建触发器后,触发器详情页面可对触发器进行修改及删除的操作,点击下图所示图标,可以获得HTTPS URL,通过该URL在浏览器或终端直接访问,触发Hello World函数。
产品标识 字符串 - 用于苹果应用商店标识产品的字符串。 局限化描述 字符串 - 产品的描述。 局部化标题 字符串 - 产品的名称。 内容版本 字符串 - 标识产品的版本的字符串。 内容长度 数字[] - 内容的总大小,以字节为单位。 价格 数字 - 产品的本地货币化的成本。 格式化价格 字符串 - 产品的本地格式化价格。 是否可下载的 布尔型 - 一个布尔值,指示应用商店是否有该产品的可下载内容
产品标识 字符串 - 用于苹果应用商店标识产品的字符串。 局限化描述 字符串 - 产品的描述。 局部化标题 字符串 - 产品的名称。 内容版本 字符串 - 标识产品的版本的字符串。 内容长度 数字[] - 内容的总大小,以字节为单位。 价格 数字 - 产品的本地货币化的成本。 格式化价格 字符串 - 产品的本地格式化价格。 currencyCode String - 基于 ISO 4217标准的由
问题内容: 我知道我可以使用它来创建DDL创建触发器; 问题在于,该触发器将在“创建序列”之类的DDL上运行;如何仅对“创建表” DDL执行此操作? 问题答案: CREATE OR REPLACE TRIGGER create_table_trigger AFTER CREATE ON SCHEMA BEGIN IF SYS.DICTIONARY_OBJ_TYPE = ‘TABLE’ THEN .
我可以从AWS SDK创建lambda函数: 但是我如何指定这个函数应该在S3上传时触发呢?