こんにちは、にいるです。
Savepoオリジナルの開発初心者向けプログラム「Sink it」です。
今回で第18回目、題材はクエリ言語の「DML」です。
この記事は「18.DMLを使ってみよう」の解説と解答です。
1.DMLとは
基本的な構文です。
1 2 3 4 5 6 7 8 9 10 11 12 |
// 新規作成 insert 変数; // 更新 update 変数; // 新規作成と更新 upsert 変数(外部キー項目); // 削除 delete 変数; // 復元 Undelete 変数; // マージ merge 変数A 変数B; |
2.解答・解説
解答
解答です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// ①DMLを使用して、「Test」という名前の取引先レコードを作成してください。 Account a = new Account(Name='Test'); System.debug(a.Id); insert a; System.debug(a.Id); // ②DMLを使用して、取引先「Test」の説明項目に「テストだよ。」を代入してください。 Account a = [SELECT Id,Name,Description FROM Account WHERE Name ='Test' LIMIT 1]; System.debug(a.Name); System.debug(a.Description); a.Description = 'テストだよ。'; update a; System.debug(a.Name); System.debug(a.Description); |
■デバッグ
①DMLを使用して、「Test」という名前の取引先レコードを作成してください。
更新時に項目をSELECTしていなくても、代入するときはそのまま代入できるみたいですね。
更新後であれば問題なく、デバッグでも参照できました。
②DMLを使用して、取引先「Test」の説明項目に「テストだよ。」を代入してください。
解説
DMLはデータ操作言語です。
ユーザはレコード画面でデータを入力して保存ボタンを押すことでデータを更新しますが、ApexではDMLを使用して自動でデータ操作を行うことができます。
DMLを使用すれば、下記のようにfor文を使って取得したレコードの書き換えを一括で実行できますね。
1 2 3 4 5 6 7 8 9 |
List<Account> accList = new List<Account>(); List <Account> selectList = [SELECT Id,Name,Description FROM Account LIMIT 50]; for( Account a : selectList){ a.Description = 'テストだよ。'; accList.add(a); } update accList; |
上記の場合、取得した50件の取引先項目を更新します。
ガバナ制限に引っかかるので、for文の外でDML(update)を実行しています。
3.まとめ
いかがでしたでしょうか。
DMLを使用すれば、Salesforceデータの挿入、更新、マージ、削除、復元が可能になります。
個人的にはマージは使ったことないので、自動マージ機能なんか作ってみたいですね。
皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!
コメント