Salesforce基础知识学习Day05

DML学习

通过DML操作记录

使用DML在Salesforce中创建和修改记录。DML提供简单语句用于插入、更新、合并、删除和修复记录。方便你以简单的方式来管理记录
Apex是一种以数据为中心的语言,并且保存在Lighting平台上。便于您直接访问Salesforce中的数据,不同于需要额外设置才能连接到数据库的编程语言。使用Apex  DML可以轻松管理记录。通过调用DML语句可以快速对Salesforce记录执行操作。
此例将Acme添加到Salesforce
Account acct = new Account(Name = 'Acme',Phone = '(415)555-1212, NumberOfEmployees = 100);
insert acct;

DML语句

以下是可用的DML语句:

  • insert

  • update

  • upsert

  • delete

  • undelete

  • merge

    每个DML语句接受单个sObject或者单个sObject列表。对sObject列表进行操作是处理记录更有效的方法
    upsert和merge是Salesforce特有的,使用非常方便。
    通过upsert操作在单个语句中创建新纪录并更新之前的记录。使用指定字段来确定对象的存在。如果没有指定字段,则使用id字段
    merge语句将最多三个相同sObject类型的记录合并到一个记录中。同时删除其他记录并重新设置关联记录的父级

自动分配给新纪录的id字段

插入记录时系统会为每条记录分配一个id。除了将id值保留在数据库外,Id值还会自动填充您在DML调用中用作参数的sObject变量上
此例展示如何获取与插入客户对应的sObject上的id

Account acct = new Account(Name='Acme',Phone = '(415)555-1212,NumberOfEmployees = 100);
insert acct;
ID acctID = acct.Id
system.debug('ID = '+acctID);

注意:从数据库中检索记录以获取其字段不能使用DML来完成,需要使用SOQL来编写查询语句

批量DML

可以对单个sObject或者批量sObject列表进行DML操作.推荐使用批量DML的方法。有助于避免达到控制器限制。例如每个Apex有150条DML的限制。设置此限制的目的是确保公平访问Lighting平台中的共享资源。对sObject列表执行DML操作算一个DML语句
本示例通过在一次调用中插入联系人列表的方式,达到批量插入联系人的目的。然后,样本也会批量更新这些联系人

  1. 使用匿名Apex在Console中执行以下代码块
List<Contact> contactList = new List<Contact>{
   
	new Contact(FirstName = 'joe',LastName = 'Smith',Department = 'Finance'),
	new Contact(FirstName = 'Kathy',LastName = 'Smith',Department= 'Technology'),
	new Contact(FirstName = 'Caroline',LastName = 'Roth',Department= 'Finance'),
	new Contact(FirstName = 'Kim',LastName = 'Shain',Department= 'Education')
};
insert contactList;
List<Contact> listToUpdate = new List<Contact>();
for(Contact con : contactList){
   
	if(con.Department == 'Finance'){
   
		con.Title = 'Finance analyst';
		listToUpdate.add(con);
	}
}
update listToUpdate;
  1. 检查最近在组织中创建的联系人。财务部门的两个联系人的职务应该是 Financial analyst

更新插入记录

如果列表中同时包含新纪录和已有记录,可以使用upsert语句处理列表中所有记录的插入和更新操作。upsert语句可以避免创建重复记录。不需要判断哪些是已有记录从而节省时间
upsert语句通过比较某个字段的值,将sObject与现有记录进行匹配。如果调用此语句时没有指定字段.则upsert语句会使用sObject ID来匹配现有记录。或者可以指定一个现有对象的字段。

upsert语法
upsert sObject | sObject[];
upsert sObject | sObject[] field;

可选字段是字段令牌,例如指定MyExternalID 字段的语句是

upsert sObjectList Account.Fields.MyExternalID ;

upsert使用sObject记录的主键id、或者外部id来确定是创建记录还是更新记录

  • 如果主键不匹配,则创建记录
  • 如果主键匹配一次,则更新记录
  • 如果主键匹配多次,则报错。并且既不插入也不更新

此示例展示了如何通过 upsert 更新已有联系人记录并在单次调用中插入新联系人。调用 upsert 更新了已有联系人 Josh,并插入了新联系人 Kathy。

Contact josh = new Contact(FirstName = 'Josh',LastName = 'Kaplan',Department = 'Finance');
insert josh;
josh.Description = ' 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值