特定の sObject (設定オブジェクトともいう) に対する DML 操作は、同じトランザクション内の他の sObject の DML と混在させることができません。この制限が存在する理由は、sObject には、組織のレコードへのユーザのアクセスに影響を与えるものがあるためです。不適切なアクセスレベル権限で操作が実行されないように、こうした種別の sObject は別のトランザクションで挿入または更新する必要があります。たとえば、1 つのトランザクション内で取引先とユーザロールを更新することはできません。
プロセスを使用して 1 つのトランザクションで両方を実行しようとするとエラーが表示されます。
エラー: 要素 myRule_1_A1 (FlowRecordCreate) でエラーが発生しました。
INSERT --- INSERT FAILED --- ERRORS : (MIXED_DML_OPERATION) 非設定オブジェクトを更新した後の設定オブジェクト上の DML 操作 (またはその逆) は、許可されていません: Invoice_Statement__c、元のオブジェクト: User
再現手順
1.ユーザオブジェクトでプロセスを作成します。
2.条件を [有効] | [次の文字と一致する] | [True] に設定します。
3.[取引先] オブジェクトの [ルール適用時のアクション] を [レコードを作成] に設定します。
4.プロセスを有効化します。
5.新しいユーザを作成して有効化します。
次の使用事例のように、入力規則を使用してユーザオブジェクトと取引先責任者オブジェクトを更新しようとする場合
入力規則
IF( Community_User_s_Account_ID__c== $Setup.COMM_Profile__c.BluIdAccountId__c , IF( OR(ProfileId== $Setup.COMM_Profile__c.FullAccessProfile__c ,ProfileId== $Setup.COMM_Profile__c.BasicProfileId__c) , true, false),false) Community_User_s_Account_ID__c は Contact.AccountId の値を取得するためのユーザ内の数式項目です。
ログインすると次のエラーがユーザに表示されます。
You cannot mix EntityObjects with different UddInfos within one transaction: id = 003******** (1 つのトランザクション内で EntityObjects と異なる UddInfos を混在させることはできません: id = 003********)
またはさらに具体的な次のエラーが表示されます。
次のエラーのため、ログインできません。
ERROR_CREATING_USER: 入力規則数式「UserProfileSwitchRule」が無効 (java.lang.IllegalStateException: Programmer Error: you cannot mix EntityObjects with different UddInfos within one transaction: id = 003********** (java.lang.IllegalStateException: プログラマーエラー: 1 つのトランザクション内で EntityObjects と異なる UddInfos を混在させることはできません: id = 003********)
再現手順
1.コミュニティ URL (例: https://<instance-community-URL>/<community-name>/s) にログインします。
2.右上隅にある [サインイン] ボタンをクリックします。
3.承認済みユーザのログイン情報 (ユーザ名とパスワード) を使用してコミュニティにログインします。
4.上記のエラーが生成されます。
アクションが同じトランザクション内で実行される場合は、[スケジュール済みアクション] の下にアクションを追加します。この配置によって、更新アクションまたは作成アクションが [ルール適用時のアクション] から分離されます。
スケジュール済みアクションは次の条件で使用できます。
[評価条件] が次の設定になっている。
重要: この数式を含むエラーメッセージで説明されているように、この実装は許可されません。
「...(java.lang.IllegalStateException: Programmer Error: You cannot mix EntityObjects with different UddInfos within one transaction: id = 003******** (...(java.lang.IllegalStateException: プログラマーエラー: 1 つのトランザクション内で EntityObjects と異なる UddInfos を混在させることはできません: id = 003********)」
これは既存の機能の制限です。
注意: Salesforce や Facebook などの標準認証プロバイダはこの制限の影響を受けません。これらのプロバイダは説明された使用事例でのカスタム実装のようなものです。回避策を使用して、カスタム認証プロバイダ用のユーザの入力規則によってオブジェクトが混在することを避けることができます。
例:
1.認証登録ハンドラで実行されるステートメントをコメントアウトします (例: // update(u);)。
2.下の参照資料で指定されているように、設定エンティティオブジェクトと非設定エンティティオブジェクトを混在させないように入力規則を変更します。
ヒント (省略可能): 入力規則を無効にするとうまく機能します。
000382600

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.