2011-01-21

Force.com : Apex で DML 処理 - insert

 
Apex で DML 処理 - insert
  • Ex. 取引先(Account)に 1 レコードを追加したい
  • Ex. 取引先(Account)に複数レコードを追加したい



○ 取引先(Account)に 1 レコードを追加したい

Account account = new Account(Name='foo');
try {
    insert account;
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}

Account account = new Account(Name='foo');
try {
    Database.SaveResult sr = Database.insert(account);
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}



○ 取引先(Account)に複数レコードを追加したい

Account[] accounts = new Account[]{new Account(Name='foo'), new Account(Name='boo'), new Account(Name='bar')};
try {
    insert accounts;
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}
※ 1 件でも insert に失敗場合、全レコードが rollback される

Account[] accounts = new Account[]{new Account(Name='foo'), new Account(Name='boo'), new Account(Name='bar')};
try {
    Database.SaveResult[] srs = Database.insert(accounts);
    // ↑と同値:Database.SaveResult[] srs = Database.insert(accounts, true);
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}
※ 1 レコードでも insert に失敗場合、全レコードが rollback される

Account[] accounts = new Account[]{new Account(Name='foo'), new Account(Name='boo'), new Account(Name='bar')};
try {
    Database.SaveResult[] srs = Database.insert(accounts, false);
} catch (DmlException e) {
    System.debug('***** NG : ' + e);
}
※ insert に成功したレコード: commit、insert に失敗したレコード: rollback、として扱われる



● Database.SaveResult

  • Database.Error[] Database.SaveResult#getErrors() : エラーメッセージとステータスコードを取得。
  • ID Database.SaveResult#getId() : Id を取得。値が入っている場合は insert に成功。値が空の場合は insert に失敗。
  • Boolean Database.SaveResult#isSuccess() : 成功した場合は true。それ以外の場合は false。



◇ 確認環境

  • Salesforce - Developer Edition - API バージョン 20.0



◇ 参考

 

0 件のコメント:

コメントを投稿