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)