Apex DatabaseクラスによるDML操作 部分データ登録方法

環境
Salesforce

操作例1
Account acc1 = new Account(Name = 'data1’);
Account acc2 = new Account(); // 必須項目無し
List<Account> accList = new List<Account>{acc1, acc2};
insert accList;

結果
System.DmlException → 2件とも作成されない
通常のDML操作を行った場合は、対象のレコードに1件でもエラーがあれば残りの
レコードもデータベースに登録されません。

操作例2
DatabaseクラスによるDML操作メソッドの第二引数にfalseを指定することで部分的に登録することが可能です。

サンプルコード

Account acc1 = new Account(Name = 'record2');
Account acc2 = new Account(); // 必須項目無し
List<Account> accList = new List<Account>{acc1, acc2};
Database.insert(accList, false);

結果
エラーは発生せず、acc1のみデータベースに登録される

第2引数はallOrNoneの意味で、trueに指定するか省略した場合は通常のDML操作と同じです。
以下3つはDMLの操作結果においては同義です。

insert xxx
Database.insert(xxx, true)
Database.insert(xxx)

 

Apex

Posted by arkgame