Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
Hide categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • AI Models
      • Inference Essentials
    • Vector Database
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • Heroku Enterprise
  • Heroku Connect (Salesforce 同期)
  • Heroku Connect のリファレンス
  • Heroku Connect のデータベーステーブル

Heroku Connect のデータベーステーブル

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2023年03月30日(木)

Table of Contents

  • データベーステーブルの構造
  • Salesforce のスキーマの変更

データベーステーブルの構造

オブジェクトをマッピングする​と、Heroku Connect は、そのマッピングされたオブジェクトのデータを保存するために使用されるデータベーステーブルを作成または更新します。

  • マッピングテーブルでは、Salesforce オブジェクト名の小文字のバージョンが使用されます。たとえば、Account​ Salesforce オブジェクトは account​ データベーステーブルにマッピングされます。

  • 列名では、Salesforce フィールド名の小文字のバージョンが使用されます。たとえば、AccountNumber​ Salesforce フィールドは accountnumber​ データベース列にマッピングされます。

  • 新しいマッピングを作成すると、Heroku Connect が Salesforce からのデータを自動的に入力するための新しいデータベーステーブルが作成されます。

  • 既存のマッピングを編集すると、ALTER TABLE​ SQL コマンドを使用して既存のデータベーステーブルが変更されます。Heroku Connect は、新しくマッピングされたすべてのフィールドに Salesforce からのデータを入力します。

Heroku Connect では、新しいマッピングの作成時に既存のテーブルを置き換えません。テーブルが正しく作成されない場合、データの同期時にエラーが発生します。マッピングされたテーブルを自分で作成することは避けてください。ORM フレームワークを使用する場合は、そのフレームワークで、基礎となるテーブルをデータベースに作成しようとしていないことを確認してください。

システム列

データベース列にマッピングするように選択された Salesforce フィールドに加えて、Heroku Connect は、マッピングされたテーブルに次のシステム列を自動的に追加します。

列名 データベース型 インデックス処理 説明
id​ 整数 あり (プライマリキー) 一意の、自動的に増分する整数のプライマリキー。これは、実装の詳細とみなす必要があります。Heroku Connect は、このシーケンスがリセットされるタイミングや、リロード後の値の一意性について保証していません。
sfid​ varchar(18) あり (一意) レコードが Salesforce と同期されたときにデータが自動的に入力される Salesforce オブジェクトの Id​ フィールド。
systemmodstamp​ タイムスタンプ あり Salesforce オブジェクトが最後に変更された日時 (UTC タイムゾーン) であり、更新のポーリング時に Heroku Connect によって使用されます。
isdeleted​ ブール値 なし Salesforce の IsDeleted​ フィールドを追跡するために使用されます。これにより、Heroku Connect は、更新のポーリング時に Salesforce で削除されたレコードを処理できます。Salesforce オブジェクトに IsDeleted​ フィールドがある場合にのみ作成されます。
_hc_lastop​ varchar(32) なし レコードに対して実行された最後の同期操作を示します。
_hc_err​ varchar(1024) なし 最後の同期操作でエラーが発生した場合は、そのエラーに関するより詳細な情報が含まれた JSON オブジェクトがこの列に含まれます。

これらの列は、同期操作を追跡して報告するために Heroku Connect によって使用されるため、テーブルから削除してはなりません​。デバッグを支援するために列から読み取ることはできますが、Heroku Connect の同期操作でエラーが発生する可能性があるため、これらの列に書き込んではなりません​。

システムフィールド: 読み取り専用の列

Heroku Connect で書き込みを Salesforce に同期するときに、読み取り専用である一部の列への書き込みは無視されます。これらの列は、ほとんどの Salesforce オブジェクトにあるシステムフィールドに対応しています。詳細は、システムフィールド​に関するページを参照してください。

新しいレコードの書き込みを Salesforce に同期するときに、次の列は設定できません。

  • CreatedDate
  • Id
  • IsDeleted
  • LastModifiedDate
  • SystemModstamp

更新を Salesforce に同期するときに、次の列は更新できません。

  • CreatedById
  • CreatedDate
  • IsDeleted
  • LastModifiedById
  • LastModifiedDate
  • SystemModstamp

ステータス情報

_hc_lastop​ および _hc_err​ 列を使用すると、デバッグを支援したり、アプリケーションで同期ステータス情報を表示したりできます。

_hc_lastop​ 列は、最初は空白になり、その後に同期プロセスの一部として次のいずれかのステータスに更新されます。

  • 'PENDING'​ - データベース内の新しい行が Salesforce との同期を待っています。

  • 'INSERTED'​ - データベース内の新しい行が Salesforce に挿入されました。この時点で、sfid​ も設定されます。

  • 'UPDATED'​ - データベース内の既存の行が Salesforce で正常に更新されました。

  • 'SYNCED'​ - 新しい行が Salesforce から​同期されました。

  • 'FAILED'​ - Salesforce の同期が失敗しました。

  • NULL​ - この行は初期ロードから変更されていません。

簡単には修正できない以前からあるバグが原因で、_hc_lastop​ は実際の状態を表していることが保証されません。_hc_lastop​ を使用して Salesforce への書き込みの成功を判定している場合は、常にそれをトリガーログ​と照合します。

失敗が発生した場合は、次のプロパティが含まれた JSON オブジェクトが _hc_err​ 列に含まれます。

プロパティ 説明
op​ 試行された Salesforce 操作。
src​ エラーのソース。Salesforce エラーの場合は、SFDC​ に設定されます。
msg​ エラーを説明している Salesforce によって返されたメッセージ。

マッピングされるデータ型

次の表は、Salesforce フィールド型がデータベース内の列にどのようにマッピングされるかを示しています。

ほとんどの Salesforce フィールド型は Heroku Connect で完全にサポートされています。現時点でサポートされていないフィールド型についての詳細は、以下を参照​してください。

Salesforce の型 データベース型 注意事項
AnyType テキスト 値は、データベースに保存されるときに、その動的な型 (テキスト、日付、数値など) からテキストに変換されます。
Auto Number varchar フィールドの長さは、フィールド設定に基づいて Salesforce によって提供されます。
Checkbox ブール値
Currency 倍精度
Date 日付
DateTime タイムゾーンなしのタイムスタンプ 時刻は UTC として保存されます。
Email varchar(80)
Encrypted String varchar フィールドの長さは、フィールド設定に基づいて Salesforce によって提供されます。これらのフィールドの処理方法についての詳細は、以下​を参照してください。
External Lookup Relationship varchar フィールドの長さは、フィールド設定に基づいて Salesforce によって提供されます。
Formula 使用されるデータベース型は、数式の戻り値の型 (たとえば、Checkbox の戻り値の型はブール値のデータベース型を使用する) によって決定されます。これらのフィールドの処理方法についての詳細は、以下​を参照してください。
ID varchar(18) 自動的に sfid​ としてマッピングされます (「システム列)​」を参照)。
Lookup Relationship varchar(18)
Number 倍精度
Percent 倍精度 パーセント記号が削除されたかのように、パーセント値が提供されます。たとえば、100%​ は Postgres では 100​ として保存されます。計算で使用するために、この数値を 100 で割ることができます。
Phone varchar(40) (650) 555-0100 などの形式が含まれています。
Picklist varchar フィールドの長さは、ピックリスト項目に基づいて Salesforce によって提供されます。2020 年 8 月 13 日よりも後に作成されたアドオンでは、これは varchar(255) であることが保証されます。
Picklist (Multi-Select) varchar(4099) 複数の選択がセミコロン区切りリストとして返されます。
​例: ​item 1;item 2
Reference varchar(18)
Roll-Up Summary 倍精度 これらのフィールドの処理方法についての詳細は、以下​を参照してください。
Text varchar フィールドの長さは、フィールド設定に基づいて Salesforce によって提供されます。
Text Area テキストまたは varchar フィールドの長さが 256 以上の場合はテキスト、それ以外の場合は varchar。
Text Area (Long) テキストまたは varchar フィールドの長さが 256 以上の場合はテキスト、それ以外の場合は varchar。
Text Area (Rich) テキストまたは varchar フィールドの長さが 256 以上の場合はテキスト、それ以外の場合は varchar。
Time タイムゾーンなしの時刻
URL varchar フィールドの長さは、フィールド設定に基づいて Salesforce によって提供されます。

空の文字列/空白文字列/NULL 文字列

Salesforce のデータモデルには、空の文字列の概念はありません。このため、空の文字列または空白文字列の値を示すには、すべての文字列型が DB で NULL の値を使用する必要があります。 Connect によって管理されているテーブルに空の文字列が書き込まれた場合、その値は NULL に自動的に変換されます。

暗号化された文字列

Heroku Connect での暗号化された文字列の処理方法は、Salesforce 組織が Shield Platform Encryption または従来の暗号化​のどちらを使用しているかによって異なります。

Shield Platform Encryption

Shield Platform Encryption が有効になっているフィールドまたはレコードは、Salesforce で保存時に暗号化されます。Salesforce で Heroku Connect を認証するために使用されるユーザー資格情報に暗号化されたフィールドまたはレコードに対する読み取りアクセス権がある場合、暗号化されていない値は Salesforce から受信され、暗号化されずにデータベースに保存されます。ユーザーに読み取りアクセス権がない場合、そのユーザーはデータを表示できません。"暗号化されたデータの表示" アクセス許可は Shield Platform Encryption には適用されません。

従来の暗号化

Salesforce で Heroku Connect を認証するために使用されるユーザー資格情報に暗号化されたデータの表示​アクセス許可がない場合、暗号化された文字列はマスクされた形式で Salesforce から受信されます。

たとえば、暗号化されたクレジットカード番号は ****-****-****-1023​ としてデータベースに保存されます。

データベースが新しいプレーンテキスト値で更新される可能性があり、Salesforce は、その新しいデータがデータベースからプッシュされたときに暗号化を処理します。そのレコードが次回 Salesforce からのデータで更新されると、データベース内のプレーンテキスト値はマスクされた形式で上書きされます。

従来の暗号化を使用しているときに暗号化されていない値を Salesforce から受信できるようにするには、Heroku Connect を認証するために使用されるユーザー資格情報の暗号化されたデータの表示​アクセス許可を有効にする必要があります。

クロスオブジェクト数式およびロールアップサマリーフィールド

数式フィールド​は、クエリ時に Salesforce によって計算され、他のフィールド、関数、リテラル値を使用できます。また、マスターの詳細またはルックアップ関係を使用して、親オブジェクト内のフィールドを参照することもできます。ただし、これにより、Heroku Connect がデータを同期しているときに問題が発生する場合があります。

数式フィールドは自動的に計算され​、レコード詳細ページで読み取り専用になっており、最終更新日フィールドを更新しません。親オブジェクトが変更されたことにより発生した数式フィールドの変更によって、子オブジェクトの SystemModStamp​ は更新されません。つまり、このオブジェクトは Heroku Connect によって同期されません。

次に例を示します。

  • Contact​ オブジェクトには、関連する親 Account​ オブジェクトの Name​ フィールドを参照する name_formula__c​ という名前の数式フィールドがあります。
  • Account​ レコードの Name​ フィールドが更新されます。
  • name_formula__c​ の更新された値は、関連 Contact​ レコードのクエリが実行されたときに返されます。
  • Contact​ レコードの SystemModStamp​ は更新されない​ため、新しい name_formula__c​ 値は Heroku Postgres データベースと同期されません​。

この問題の考えられる回避方法の説明については、Salesforce Idea Exchange​ を参照してください。

ロールアップサマリーフィールド​には親レコードの関連子レコードからの値が要約され、マスターの詳細関係の親レコードの値が表示されます。Salesforce では、ロールアップサマリーフィールドで参照されている子オブジェクトのフィールドが更新されると、ロールアップサマリーフィールドが計算されます。

次に例を示します。

  • 親 Account​ オブジェクトに、関連の子 Opportunity​ レコードの Amount​ フィールドの合計を計算する amount_rollup__c​ というロールアップサマリーフィールドがあります。
  • Opportunity​ レコードの Amount​ フィールドが更新されます。
  • 関連 Opportunity​ レコードの Amount​ フィールドが更新されると、Account​ レコードの amount_rollup__c​ の値が更新されます。
  • Account​ オブジェクトの SystemModStamp​ は最後に更新される​ため、新しい amount_rollup__c​ 値は最後に Heroku Postgres データベースと同期されます​。

ロールアップサマリーフィールド値の計算には、影響を受けるレコード数とその他の要因に応じて、最大 30 分​かかる可能性があります。計算済みフィールドが同期していない​理由についてのこの Heroku ヘルプ記事を参照してください。

サポートされていないデータ型

次の型はサポートされていないため、マッピングを作成または編集するときに Mapped Fields​ (マッピングされたフィールド) 一覧に表示されません。

Base64 バイナリフィールド

Attachment​、ContentVersion​、Document​、Scontrol​ などに保存されたバイナリファイルは、Base64 でエンコードされたバイナリデータ型を使用します。Base64 フィールドは Bulk API​ クエリでサポートされていないため、Heroku Connect ではサポートされません。したがって、画像やその他の種類のバイナリデータはサポートされません。代わりの方法として、Amazon S3 に画像を保存し、画像の URI を含む単純なテキストフィールドを Salesforce とデータベースの間で同期することができます。

複合フィールド

Address および Geolocation 複合フィールド型​は直接マッピングできませんが、そのコンポーネントのフィールドをマッピングに追加することは可能です。

たとえば、Contact​ オブジェクトには、次のフィールドを使用してマッピングできる MailingAddress​ Address フィールドがあります。

フィールド名 データベース型
MailingCity varchar(40)
MailingCountry varchar(80)
MailingLatitude 倍精度
MailingLongitude 倍精度
MailingPostalCode varchar(20)
MailingState varchar(80)
MailingStreet varchar(255)

同様に、OfficeLocation​ という名前のカスタム Geolocation フィールドは、次のフィールドを使用してマッピングされます。

フィールド名 データベース型
OfficeLocation__​Latitude__​s 倍精度
OfficeLocation__​Longitude__​s 倍精度

サポートされていないオブジェクト型

次のオブジェクト型は、現在サポートされていません。

Big Objects

この型のオブジェクトの API 名には __b​ のサフィックスが付いています。Salesforce には、Heroku Connect が Big Objects を同期できない SOQL クエリの制限​があります。

Platform Events

この型のオブジェクトの API 名には __e​ のサフィックスが付いています。

External Objects

この型のオブジェクトの API 名には __x​ のサフィックスが付いています。

マッピングされたテーブルのクエリ

マッピングされたテーブルは、Postgres データベース内の他のテーブルと同様にクエリできます。アドオンをプロビジョニングするときに選択したスキーマ名で (たとえば、デフォルトの salesforce​ スキーマ名を使用して) テーブル名を修飾する必要があります。

SELECT * FROM salesforce.account;

完全修飾名を指定しなくてもテーブルをクエリできるように、そのスキーマを Postgres のスキーマ検索パス​に追加することもできます。次に例を示します。

SET search_path TO salesforce,public;
SELECT * FROM account;

検索パスを設定する場合は、public​ スキーマを含める必要があります​。これには、Heroku Connect によって使用される共有関数が含まれています。

システムテーブル

Heroku Connect は、スキーマ内に次のいくつかのシステムテーブルを作成します。

  • _hcmeta

    This table contains metadata that allows Connect to ensure the database is properly initialized and configured.

  • _trigger_log

    The _trigger_log table is used to record updates that must be written to Salesforce. Data remains in this table for up to one day allowing you to track updates that are pending, in progress or have already completed. If an error occurs while writing to Salesforce it’s logged in this table.

  • _trigger_log_archive

_trigger_log​ テーブル内のデータが 1 日を過ぎると、データは最大 31 日間利用できるこのアーカイブテーブルに移されます。注意:​ アーカイブはデモプラン​では 7 日間のみ利用できます。

これらのテーブルは、同期操作を追跡するために Heroku Connect によって使用されるため、スキーマから削除してはなりません​。デバッグを支援するためにテーブルから読み取ることはできますが、Heroku Connect の同期操作でエラーが発生する可能性があるため、これらのテーブルに書き込んではなりません​。

 

Connect スキーマには、Salesforce と同期するテーブルのみを格納してください。他のテーブルを追加すると、_trigger_log​ が汚染され、捕捉された変更を処理および無視しようとする間、Connect の速度が低下します。複数のスキーマをまたいでテーブルにアクセスする必要がある場合は、PostgreSQL の search_path​ 機能​をアプリケーションで検討してください。

Salesforce のスキーマの変更

フィールドの追加

Salesforce 内のオブジェクトに新しいフィールドを追加しても、Heroku Connect の同期操作には影響を与えません。既存のマッピングに新しいフィールドを追加することを選択した場合、Heroku Connect はマッピングされたデータベーステーブル内に自動的に列を作成し、Salesforce からフィールドのデータを取得し、そのデータを使用してデータベース内の既存のレコードを設定します。

  • 単一列をマッピングに追加する場合、そのフィールドの値が NULL であるレコードを除いて、そのオブジェクトのデータが Heroku Connect によって Salesforce から取得されます。
  • 複数列を追加する場合、Salesforce からデータを取得するクエリで NULL 値は除外されません。

フィールドの変更

Heroku Connect は、Salesforce 内のフィールドの定義の変更 (フィールドのデータ型や長さの変更など) をただちには​検出しないため、これにより同期エラーが発生する可能性があります。

フィールド定義を変更する必要がある場合は、次のようにする必要があります。

  1. マッピングを編集​し、変更しようとしているフィールドを削除します。
  2. Salesforce でフィールド定義を変更します。
  3. マッピングを編集​し、手順 1 で削除したフィールドを戻します。これにより、そのフィールドのデータ型に手順 2 で行った変更が反映されます。

フィールドの削除

Salesforce オブジェクトからフィールドを削除する場合は、まず Heroku Connect でそのフィールドをマッピングから削除することがベストプラクティスです。フィールドをマッピングから削除する前に Salesforce オブジェクトから削除することを選択した場合、Heroku Connect は次回、変更がないかどうかマッピングがポーリングされたときにエラーを報告します。このエラーを解決するには、マッピングを編集​し、なくなっているフィールドを削除します。これらは赤色で強調表示されます。変更を保存すると、Heroku Connect はマッピングされたテーブルから列を削除し、それにより同期操作が再開されます。

関連カテゴリー

  • Heroku Connect のリファレンス
マッピング状態のリファレンス Heroku Connect API

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices