当前位置: 首页 > 知识库问答 >
问题:

创建一个触发器来验证产品对象的数据

堵琨
2023-03-14

我有一个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);
            }
        } 
    }

}


共有2个答案

梁祯
2023-03-14

要添加到程序的答案。。。

您将触发器定义为插入之前、更新之前。酷,那是做数据验证、字段预填充的完美地方。。。您可以免费保存到数据库!

但是这与下一行发生冲突if(Trigger.is更新

P、 是datetime字段?Sopr.AddedDate\uu c=系统。现在() 更好

岑炯
2023-03-14

根据您的要求

创建对象记录时,触发器应检查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函数。

  • 问题内容: 我知道我可以使用它来创建DDL创建触发器; 问题在于,该触发器将在“创建序列”之类的DDL上运行;如何仅对“创建表” DDL执行此操作? 问题答案: CREATE OR REPLACE TRIGGER create_table_trigger AFTER CREATE ON SCHEMA BEGIN IF SYS.DICTIONARY_OBJ_TYPE = ‘TABLE’ THEN .

  • 产品标识 字符串 - 用于苹果应用商店标识产品的字符串。 局限化描述 字符串 - 产品的描述。 局部化标题 字符串 - 产品的名称。 内容版本 字符串 - 标识产品的版本的字符串。 内容长度 数字[] - 内容的总大小,以字节为单位。 价格 数字 - 产品的本地货币化的成本。 格式化价格 字符串 - 产品的本地格式化价格。 是否可下载的 布尔型 - 一个布尔值,指示应用商店是否有该产品的可下载内容

  • 产品标识 字符串 - 用于苹果应用商店标识产品的字符串。 局限化描述 字符串 - 产品的描述。 局部化标题 字符串 - 产品的名称。 内容版本 字符串 - 标识产品的版本的字符串。 内容长度 数字[] - 内容的总大小,以字节为单位。 价格 数字 - 产品的本地货币化的成本。 格式化价格 字符串 - 产品的本地格式化价格。 currencyCode String - 基于 ISO 4217标准的由

  • 我可以从AWS SDK创建lambda函数: 但是我如何指定这个函数应该在S3上传时触发呢?