No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
Apex DML 操作
Apex DML ステートメントまたは Database クラスのメソッドを使用して DML 操作を実行できます。
リード取引開始の場合、Database クラスの convertLead メソッドを使用します。これに相当する DML はありません。
Apex のデータについての詳細は、「Apex でのデータの操作」を参照してください。
Apex DML ステートメント
データベース内のデータを挿入、更新、マージ、削除、および復元するには、データ操作言語 (DML) 操作を使用します。
次の Apex DML 操作を使用できます。
Update ステートメント
update DML 操作は、個別の取引先、取引先責任者、請求書の明細などの、組織のデータ内にある 1 つ以上の既存の sObject レコードを更新します。update は SQL の UPDATE ステートメントに類似しています。
構文
update sObject[]
例
1Account a = new Account(Name='Acme2');
2insert(a);
3
4Account myAcct = [SELECT Id, Name, BillingCity FROM Account WHERE Id = :a.Id];
5myAcct.BillingCity = 'San Francisco';
6
7try {
8 update myAcct;
9} catch (DmlException e) {
10 // Process exception here
11}Upsert ステートメント
upsert DML 操作は、既存オブジェクトの有無を確認するために任意のカスタム項目を使用して、1 つのステートメント内で新規 sObject レコードを作成したり、既存の sObject レコードを更新したりします。
構文
upsert sObject[] opt_external_id
opt_external_id は、組織のデータにすでに存在するレコードを照合するために使用されるカスタム項目を指定する、任意の変数です。カスタム項目は、External Id 属性が選択された状態で作成する必要があります。また、項目に Unique 属性が選択されていない場合、upsert によって誤って重複レコードが挿入されないように、コンテキストユーザは対象オブジェクトに対するオブジェクトレベルの「すべての参照」権限、または「すべてのデータの参照」権限が必要です。
opt_external_id が指定されていない場合、デフォルトで sObject レコードの ID 項目が使用されます。
Upsert が Insert と Update を判別する方法
- キーが一致しない場合、新規オブジェクトレコードが作成されます。
- キーが一度だけ一致したら、既存のオブジェクトレコードが更新されます。
- キーが複数回一致する場合は、エラーが生成され、オブジェクトレコードは挿入も更新もされません。
sObject レコードが参照項目として設定されている場合、sObject レコードを更新/挿入するために外部キーを使用できます。詳細は、『Salesforce および Force.com のオブジェクトリファレンス』の「データ型」を参照してください。
例
この例は、取引先のリストの更新/挿入を実行します。
1List<Account> acctList = new List<Account>();
2// Fill the accounts list with some accounts
3
4try {
5 upsert acctList;
6} catch (DmlException e) {
7
8}次の例では、既存の一致するレコード (ある場合) の外部キーを使用して取引先のリストの更新/挿入を実行します。
1List<Account> acctList = new List<Account>();
2// Fill the accounts list with some accounts
3
4try {
5 // Upsert using an external ID field
6 upsert acctList myExtIDField__c;
7} catch (DmlException e) {
8
9}Delete ステートメント
delete DML 操作は、個別の取引先や取引先責任者など、1 つ以上の既存の sObject レコードを組織のデータから削除します。delete は、delete() の SOAP API ステートメントに類似しています。
構文
deletesObject[] | ID[]
例
次の例では、「DotCom」という名前のすべての取引先を削除しています。
1Account[] doomedAccts = [SELECT Id, Name FROM Account
2 WHERE Name = 'DotCom'];
3try {
4 delete doomedAccts;
5} catch (DmlException e) {
6 // Process exception here
7}Undelete ステートメント
undelete DML 操作は、個別の取引先や取引先責任者など、1 つ以上の既存の sObject レコードを組織のごみ箱から復元します。undelete は SQL の UNDELETE ステートメントに類似しています。
構文
undeletesObject[] | ID[]
例
1Account[] savedAccts = [SELECT Id, Name FROM Account WHERE Name = 'Trump' ALL ROWS];
2try {
3 undelete savedAccts;
4} catch (DmlException e) {
5 // Process exception here
6}Merge ステートメント
merge ステートメントは、同じ sObject データ型の最大 3 つのレコードを 1 つのレコードにマージし、他のレコードを削除してから、関連レコードを再ペアレント化します。
構文
merge sObject sObject[]
merge sObject ID
merge sObject ID[]
最初のパラメータは、他のレコードがマージされる主レコードを表します。2 番目のパラメータは、マージされてから削除される 1 つ以上の他のレコードを表します。これらのその他のレコードは、1 つの sObject レコードまたは ID、または 2 つの sObject レコードまたは ID のリストとして、merge ステートメントに渡すことができます。
例
次の例では、「Acme Inc.」と「Acme」という名前の 2 つの取引先を 1 つのレコードにマージしています。
1List<Account> ls = new List<Account>{new Account(name='Acme Inc.'),new Account(name='Acme')};
2insert ls;
3Account masterAcct = [SELECT Id, Name FROM Account WHERE Name = 'Acme Inc.' LIMIT 1];
4Account mergeAcct = [SELECT Id, Name FROM Account WHERE Name = 'Acme' LIMIT 1];
5try {
6 merge masterAcct mergeAcct;
7} catch (DmlException e) {
8 // Process exception here
9}