

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# TransactWriteItems
<a name="js-aws-appsync-resolver-reference-dynamodb-transact-write-items"></a>

Mit dem `TransactWriteItems` Anforderungsobjekt können Sie die AWS AppSync DynamoDB-Funktion anweisen, eine `TransactWriteItems` Anforderung an DynamoDB zu stellen, um mehrere Elemente zu schreiben, möglicherweise in mehrere Tabellen. Für dieses Anforderungsobjekt müssen Sie Folgendes angeben:
+ Der Name der Zieltabelle jedes Anforderungselements
+ Der Vorgang jedes auszuführenden Anforderungselements. Es gibt vier Arten von Operationen, die unterstützt werden: *PutItem*UpdateItem**, *DeleteItem*, und *ConditionCheck* 
+ Der Schlüssel jedes zu schreibenden Anforderungselements

Es gelten die DynamoDB `TransactWriteItems`-Grenzwerte.

Das `TransactWriteItems` Anforderungsobjekt hat die folgende Struktur:

```
type DynamoDBTransactWriteItemsRequest = {
  operation: 'TransactWriteItems';
  transactItems: TransactItem[];
};
type TransactItem =
  | TransactWritePutItem
  | TransactWriteUpdateItem
  | TransactWriteDeleteItem
  | TransactWriteConditionCheckItem;
type TransactWritePutItem = {
  table: string;
  operation: 'PutItem';
  key: { [key: string]: any };
  attributeValues: { [key: string]: string};
  condition?: TransactConditionCheckExpression;
};
type TransactWriteUpdateItem = {
  table: string;
  operation: 'UpdateItem';
  key: { [key: string]: any };
  update: DynamoDBExpression;
  condition?: TransactConditionCheckExpression;
};
type TransactWriteDeleteItem = {
  table: string;
  operation: 'DeleteItem';
  key: { [key: string]: any };
  condition?: TransactConditionCheckExpression;
};
type TransactWriteConditionCheckItem = {
  table: string;
  operation: 'ConditionCheck';
  key: { [key: string]: any };
  condition?: TransactConditionCheckExpression;
};
type TransactConditionCheckExpression = {
  expression: string;
  expressionNames?: { [key: string]: string};
  expressionValues?: { [key: string]: any};
  returnValuesOnConditionCheckFailure: boolean;
};
```

## TransactWriteItems Felder
<a name="js-TransactWriteItems-list"></a>

### TransactWriteItems Liste der Felder
<a name="js-TransactWriteItems-list-col"></a>

**Die Felder sind wie folgt definiert: **    
** `operation` **  
Der DynamoDB DynamoDB-Vorgang. Um die `TransactWriteItems`-DynamoDB-Operation durchzuführen, muss diese auf `TransactWriteItems` gesetzt sein. Dieser Wert ist erforderlich.  
** `transactItems` **  
Die einzuschließenden Anforderungselemente. Der Wert ist ein Array von Anforderungselementen. Es muss mindestens ein Anforderungselement angegeben werden. Dieser `transactItems`-Wert ist erforderlich.  
Für `PutItem` sind die Felder wie folgt definiert:    
** `table` **  
Die DynamoDB-Zieltabelle. Der Wert ist eine Zeichenfolge des Tabellennamens. Dieser `table`-Wert ist erforderlich.  
** `operation` **  
Der DynamoDB DynamoDB-Vorgang. Um die `PutItem`-DynamoDB-Operation durchzuführen, muss diese auf `PutItem` gesetzt sein. Dieser Wert ist erforderlich.  
** `key` **  
Der DynamoDB-Schlüssel, der den Primärschlüssel des einzufügenden Elements darstellt. DynamoDB-Elemente können je nach Tabellenstruktur einen einzelnen Hashschlüssel oder einen Hashschlüssel und einen Sortierschlüssel haben. Weitere Informationen zur Angabe eines „typisierten Werts“ finden Sie unter [Typsystem (Anforderungszuordnung](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request)). Dieser Wert ist erforderlich.  
** `attributeValues` **  
Der Rest der Attribute des Elements, die in DynamoDB gespeichert werden sollen. Weitere Informationen zur Angabe eines „typisierten Werts“ finden Sie unter [Typsystem (Anforderungszuordnung](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request)). Dies ist ein optionales Feld.  
** `condition` **  
Eine Bedingung, um zu bestimmen, ob die Anforderung erfolgreich sein soll oder nicht, basierend auf dem Status des Objekts, das sich bereits in DynamoDB befindet. Wenn keine Bedingung angegeben ist, überschreibt die `PutItem`-Anforderung alle vorhandenen Einträge für dieses Element. Sie können angeben, ob das vorhandene Element zurückgerufen werden soll, wenn die Bedingungsprüfung fehlschlägt. Weitere Informationen zu Transaktionsbedingungen finden Sie unter Ausdrücke für [Transaktionsbedingungen](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-transaction-condition-expressions). Dieser Wert ist optional.
Für `UpdateItem` sind die Felder wie folgt definiert:    
** `table` **  
Die zu aktualisierende DynamoDB-Tabelle. Der Wert ist eine Zeichenfolge des Tabellennamens. Dieser `table`-Wert ist erforderlich.  
** `operation` **  
Der DynamoDB DynamoDB-Vorgang. Um die `UpdateItem`-DynamoDB-Operation durchzuführen, muss diese auf `UpdateItem` gesetzt sein. Dieser Wert ist erforderlich.  
** `key` **  
Der DynamoDB-Schlüssel, der den Primärschlüssel des zu aktualisierenden Elements darstellt. DynamoDB-Elemente können je nach Tabellenstruktur einen einzelnen Hashschlüssel oder einen Hashschlüssel und einen Sortierschlüssel haben. Weitere Informationen zur Angabe eines „typisierten Werts“ finden Sie unter [Typsystem (Anforderungszuordnung](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request)). Dieser Wert ist erforderlich.  
** `update` **  
`update`In diesem Abschnitt können Sie einen Aktualisierungsausdruck angeben, der beschreibt, wie das Element in DynamoDB aktualisiert wird. Weitere Informationen zum Schreiben von Aktualisierungsausdrücken finden Sie in der [DynamoDB-Dokumentation UpdateExpressions ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html). Dieser Abschnitt ist erforderlich.  
** `condition` **  
Eine Bedingung, um zu bestimmen, ob die Anforderung erfolgreich sein soll oder nicht, basierend auf dem Status des Objekts, das sich bereits in DynamoDB befindet. Wenn keine Bedingung angegeben ist, aktualisiert die `UpdateItem`-Anforderung jeden vorhandenen Eintrag unabhängig vom aktuellen Status. Sie können angeben, ob das vorhandene Element zurückgerufen werden soll, wenn die Bedingungsprüfung fehlschlägt. [Weitere Informationen zu Transaktionsbedingungen finden Sie unter Ausdrücke für Transaktionsbedingungen.](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-transaction-condition-expressions) Dieser Wert ist optional.
Für `DeleteItem` sind die Felder wie folgt definiert:    
** `table` **  
Die DynamoDB-Tabelle, in der das Element gelöscht werden soll. Der Wert ist eine Zeichenfolge des Tabellennamens. Dieser `table`-Wert ist erforderlich.  
** `operation` **  
Der DynamoDB DynamoDB-Vorgang. Um die `DeleteItem`-DynamoDB-Operation durchzuführen, muss diese auf `DeleteItem` gesetzt sein. Dieser Wert ist erforderlich.  
** `key` **  
Der DynamoDB-Schlüssel, der den Primärschlüssel des zu löschenden Elements darstellt. DynamoDB-Elemente können je nach Tabellenstruktur einen einzelnen Hashschlüssel oder einen Hashschlüssel und einen Sortierschlüssel haben. Weitere Informationen zur Angabe eines „typisierten Werts“ finden Sie unter [Typsystem (Anforderungszuordnung](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request)). Dieser Wert ist erforderlich.  
** `condition` **  
Eine Bedingung, um zu bestimmen, ob die Anforderung erfolgreich sein soll oder nicht, basierend auf dem Status des Objekts, das sich bereits in DynamoDB befindet. Wenn keine Bedingung angegeben ist, löscht die `DeleteItem`-Anforderung ein Element unabhängig vom aktuellen Status. Sie können angeben, ob das vorhandene Element zurückgerufen werden soll, wenn die Bedingungsprüfung fehlschlägt. Weitere Informationen zu Transaktionsbedingungen finden Sie unter Ausdrücke für [Transaktionsbedingungen](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-transaction-condition-expressions). Dieser Wert ist optional.
Für `ConditionCheck` sind die Felder wie folgt definiert:    
** `table` **  
Die DynamoDB-Tabelle, in der der Zustand überprüft werden soll. Der Wert ist eine Zeichenfolge des Tabellennamens. Dieser `table`-Wert ist erforderlich.  
** `operation` **  
Der DynamoDB DynamoDB-Vorgang. Um die `ConditionCheck`-DynamoDB-Operation durchzuführen, muss diese auf `ConditionCheck` gesetzt sein. Dieser Wert ist erforderlich.  
** `key` **  
Der DynamoDB-Schlüssel, der den Primärschlüssel des Artikels zur Zustandsprüfung darstellt. DynamoDB-Elemente können je nach Tabellenstruktur einen einzelnen Hashschlüssel oder einen Hashschlüssel und einen Sortierschlüssel haben. Weitere Informationen zur Angabe eines „typisierten Werts“ finden Sie unter [Typsystem (Anforderungszuordnung](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request)). Dieser Wert ist erforderlich.  
** `condition` **  
Eine Bedingung, um zu bestimmen, ob die Anforderung erfolgreich sein soll oder nicht, basierend auf dem Status des Objekts, das sich bereits in DynamoDB befindet. Sie können angeben, ob das vorhandene Element zurückgerufen werden soll, wenn die Bedingungsprüfung fehlschlägt. Weitere Informationen zu Transaktionsbedingungen finden Sie unter Ausdrücke für [Transaktionsbedingungen](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-transaction-condition-expressions). Dieser Wert ist erforderlich.

Beachten Sie Folgendes:
+ Nur Schlüssel von Anforderungselementen werden in der Antwort zurückgegeben, wenn diese erfolgreich ist. Die Reihenfolge der Schlüssel entspricht der Reihenfolge der Anforderungselemente.
+ Transaktionen werden auf irgendeine Weise ausgeführt. all-or-nothing Wenn ein Anforderungselement einen Fehler verursacht, wird die gesamte Transaktion nicht ausgeführt, und Fehlerdetails werden zurückgegeben.
+ Es können keine zwei Anforderungselemente auf dasselbe Element ausgerichtet werden. Andernfalls führen sie zu *TransactionCanceledException*Fehlern.
+ Wenn der Fehler einer Transaktion vorliegt *TransactionCanceledException*, wird der `cancellationReasons` Block aufgefüllt. Wenn die Bedingungsprüfung eines Anforderungselements fehlschlägt **und** Sie nicht `returnValuesOnConditionCheckFailure` als `false` angegeben haben, wird das in der Tabelle vorhandene Element `item` an der entsprechenden Position des `cancellationReasons`-Blocks abgerufen und gespeichert.
+  `TransactWriteItems`ist auf 100 Anfrageelemente begrenzt.
+ Dieser Vorgang **wird nicht** unterstützt, wenn er zusammen mit der Konflikterkennung verwendet wird. Wenn Sie beide gleichzeitig verwenden, kann dies zu einem Fehler führen.

Für das folgende Beispiel für einen Funktionsanforderungshandler:

```
import { util } from '@aws-appsync/utils';

export function request(ctx) {
  const { authorId, postId, title, description, oldTitle, authorName } = ctx.args;
  return {
    operation: 'TransactWriteItems',
    transactItems: [
      {
        table: 'posts',
        operation: 'PutItem',
        key: util.dynamodb.toMapValues({ postId }),
        attributeValues: util.dynamodb.toMapValues({ title, description }),
        condition: util.transform.toDynamoDBConditionExpression({
          title: { eq: oldTitle },
        }),
      },
      {
        table: 'authors',
        operation: 'UpdateItem',
        key: util.dynamodb.toMapValues({ authorId }),
        update: {
          expression: 'SET authorName = :name',
          expressionValues: util.dynamodb.toMapValues({ ':name': authorName }),
        },
      },
    ],
  };
}
```

Wenn die Transaktion erfolgreich ist, ist das Aufrufergebnis in `ctx.result` wie folgt verfügbar:

```
{
    "keys": [
       // Key of the PutItem request
       {
           "post_id": "p1",
       },
       // Key of the UpdateItem request
       {
           "author_id": "a1"
       }
    ],
    "cancellationReasons": null
}
```

Wenn die Transaktion aufgrund eines Fehlers bei der Zustandsprüfung der `PutItem` Anforderung fehlschlägt, `ctx.result` ist das Aufrufergebnis wie folgt verfügbar:

```
{
    "keys": null,
    "cancellationReasons": [
       {
           "item": {
               "post_id": "p1",
               "post_title": "Actual old title",
               "post_description": "Old description"
           },
           "type": "ConditionCheckFailed",
           "message": "The condition check failed."
       },
       {
           "type": "None",
           "message": "None"
       }
    ]
}
```

`ctx.error` enthält die Einzelheiten zu dem Fehler. Die Schlüssel **keys** und **cancellationReasons** sind garantiert in `ctx.result` vorhanden.