2022/07/12

returning句とは?Salesforceでreturning句を活用する方法を紹介!

 
  

returning句とは?

returning句とは、更新された行の値を返す機能を持った句のことです。 returning句とは、更新された行の値を返す句のことですが、ピンと来ない方もいらっしゃると思います。まず、オープンソースのデータベース管理システムである「PostgreSQL」を例にとって見てみましょう。 以降で説明するように、returning句は主にINSERT文、UPDATE文、DELETE文に使われることで効力を発揮します。

INSERT文

INSERT文はテーブルに行を追加するために使われますが、returning句をオプションとして添えることで、追加した行の値を取得することができます。 それでは以下の例を見てみましょう。
CREATE TABLE users (firstname text, lastname text, id serial primary key);
INSERT INTO users (firstname, lastname) VALUES ('Joe', 'Cool') RETURNING id;
出典:https://www.postgresql.jp/document/9.6/html/dml-returning.html
例では、1行目のCREATE行がユーザーのテーブルを作成し、2行目のINSERT行が1行目で作成したテーブルにユーザーを追加しています。 ここで、2行目の最後にRETURNINGと記述されていることに注目してください。これが、returning句です。RETURNING id と記述することによって、追加したユーザーのIDを取得することができます。

UPDATE文

UPDATE文は、行の値を更新するために使われますが、returning句をオプションとして使うことで、更新した新しい値の内容を取得できます。 では、例を見てみましょう。
UPDATE products SET price = price * 1.10
  WHERE price <= 99.99
  RETURNING name, price AS new_price
出典:https://www.postgresql.jp/document/9.6/html/dml-returning.html
この例において、1行目、2行目のUPDATE文は、priceが99.99以下の場合は、priceを1.10倍した値に更新します。 ここで、3行目でRETURNINGがオプションとして使われています。この句によって、更新されたpriceの値とnameが取得できます。

DELETE文

DELETE文は、行を削除するために使われますが、returning句をオプションとして使うことで、削除した行の値を取得することができます。 以下の例を見てみましょう。
DELETE FROM products
  WHERE obsoletion_date = 'today'
  RETURNING *;
出典:https://www.postgresql.jp/document/9.6/html/dml-returning.html
この例では、1行目、2行目のDELETE文は、obsoletion_dateがtodayであった場合にその行を削除します。 3行目でRETURNINGをオプションとして使うことで、削除した行の値を取得します。

returning句を使うメリット

returning句を利用するメリットは、処理を行った履歴を残せることです。 これまでの例で見たように、returning句を活用することで処理を行った行の値を取得できるので、どの行に処理を行ったかの履歴を取得できます。 これは大量のデータを扱う際に重要です。DELETE文で条件が合致したものを削除したあとに、どの行を削除したかが分からなくなることを防ぎます。 また、処理を行った値をそのまま次の処理に利用することができます。つまり、削除した行をそのまま他の行に追加することなどが簡単に実現できます。

Salesforceでのreturning句の活用

以上で見てきたようなreturning句がSalesforceでも利用することができます。 Salesforceで利用されるデータベース操作の言語としてSOSLというものがありますが、returning句はこのSOSLのクエリに追加して利用することができます。 ここでは、テキスト検索結果を返すreturning句を例にとって、Salesforceでのreturning句の利用方法をご紹介します。

構文

それでは、どのようにSalesforceでreturning句を利用するのか具体的に見ていきましょう。 以下の例は、Salesforce developerで公開されているreturning句を利用したテキスト検索結果を返す構文です。
FIND {MyProspect} RETURNING MySampleExternalObject, KnowledgeArticleVersion, Document, FeedComment, FeedItem, ContentVersion, Product2, Solution
出典:https://developer.salesforce.com/docs/atlas.ja-jp.soql_sosl.meta/soql_sosl/sforce_api_calls_sosl_returning.htm
この例では、MyProspectの単語を検索して、各項目を取得します。

returning句で指定可能な要素

returning句で指定できる要素を具体的に見ていきましょう。 returning句は以下の例のように記述できます。
RETURNING ObjectTypeName
[(FieldList [WHERE conditionExpression] [USING Listview=listview name] [ORDER BY Clause] [LIMIT n] [OFFSET n])]
[, ObjectTypeName [(FieldList [WHERE conditionExpression] [ORDER BY Clause] [LIMIT n] [OFFSET n])]]
出典:https://developer.salesforce.com/docs/atlas.ja-jp.soql_sosl.meta/soql_sosl/sforce_api_calls_sosl_returning.htm

各要素の説明

returning句で指定可能な要素について簡単に説明していきます。 以下のテーブルでは、returning句で指定可能な要素を簡潔に説明しています。このテーブルを参照して実際に記述してみると、より理解が深まるでしょう。
要素 説明
ObjectTypeName 返されるオブジェクト名
FieldList カンマで区切られた項目のリスト
USING ListView= オブジェクトのリストビュー内で検索するための句
WHERE conditionExpression 条件によって絞り込む方法を指定する句
ORDER BY Clause 返される結果の順序付け方法を指定する句
LIMIT n 指定されたオブジェクトで最大数を設定する句
OFFSET n 返される結果の開始行を指定する句

Salesforceの便利な機能を使い倒そう!

今回はSalesforceでのreturning句の活用方法をご紹介しました。 この記事で見たように、Salesforceでreturning句を活用することで、より効率的に、より確実に膨大なデータを操作することができます。 この記事でご紹介した以外にもreturning句の活用方法はたくさんあります。ここでは紹介できませんでしたが、INSERTとSELECT文でのreturning句の利用は非常に便利です。 どんどん便利な方法を見つけて、作業を効率化していきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】