

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.

# Unterschiede zwischen einer relationalen (SQL) Datenbank und DynamoDB beim Ändern von Daten in einer Tabelle
<a name="SQLtoNoSQL.UpdateData"></a>

Die SQL-Sprache bietet die `UPDATE`-Anweisung zum Ändern von Daten. Amazon DynamoDB verwendet die `UpdateItem`-Operation für ähnliche Aufgaben.

**Topics**
+ [Ändern von Daten in einer Tabelle mit SQL](#SQLtoNoSQL.UpdateData.SQL)
+ [Ändern von Daten in einer Tabelle in DynamoDB](#SQLtoNoSQL.UpdateData.DynamoDB)

## Ändern von Daten in einer Tabelle mit SQL
<a name="SQLtoNoSQL.UpdateData.SQL"></a>

In SQL verwenden Sie die `UPDATE`-Anweisung, um eine oder mehrere Zeilen zu ändern. Die `SET`-Klausel gibt neue Werte für eine oder mehrere Spalten an und mit der `WHERE`-Klausel wird bestimmt, welche Zeilen geändert werden. Im Folgenden wird ein -Beispiel gezeigt.

```
UPDATE Music
SET RecordLabel = 'Global Records'
WHERE Artist = 'No One You Know' AND SongTitle = 'Call Me Today';
```

Wenn keine Zeilen mit der `WHERE`-Klausel übereinstimmen, ist die `UPDATE`-Anweisung wirkungslos.

## Ändern von Daten in einer Tabelle in DynamoDB
<a name="SQLtoNoSQL.UpdateData.DynamoDB"></a>

In DynamoDB können Sie entweder die DynamoDB-API oder [PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html), eine SQL-kompatible Abfragesprache, verwenden, um ein einzelnes Element zu ändern. Wenn Sie mehrere Elemente ändern möchten, müssen Sie mehrere Operationen verwenden.

------
#### [ DynamoDB API ]

In der DynamoDB-API verwenden Sie die `UpdateItem`-Aktion, um ein einzelnes Element zu ändern.

```
{
    TableName: "Music",
    Key: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today"
    },
    UpdateExpression: "SET RecordLabel = :label",
    ExpressionAttributeValues: {
        ":label": "Global Records"
    }
}
```

Sie müssen die `Key`-Attribute des zu ändernden Elements angeben sowie einen `UpdateExpression` zur Angabe der Attributwerte. `UpdateItem` verhält sich wie eine „upsert“-Operation. Das Element wird aktualisiert, wenn es in der Tabelle vorhanden ist. Andernfalls wird ein neues Element hinzugefügt (eingefügt).

`UpdateItem` unterstützt *bedingte Schreibvorgänge*, in denen die Operation nur erfolgreich abgeschlossen wird, wenn ein bestimmter `ConditionExpression` mit TRUE ausgewertet wird. Die folgende `UpdateItem`-Aktion führt die Aktualisierung nur durch, wenn der Preis des Songs größer oder gleich 2,00 ist.

```
{
    TableName: "Music",
    Key: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today"
    },
    UpdateExpression: "SET RecordLabel = :label",
    ConditionExpression: "Price >= :p",
    ExpressionAttributeValues: {
        ":label": "Global Records",
        ":p": 2.00
    }
}
```

`UpdateItem` unterstützt außerdem *unteilbare Zähler*, dies sind Attribute vom Typ `Number`, die schrittweise erhöht oder verringert werden können. Unteilbare Zähler ähneln in vielerlei Hinsicht Sequenzgeneratoren, Identitätsspalten oder Feldern für die automatische Inkrementierung in SQL-Datenbanken. 

Das folgende Beispiel ist eine `UpdateItem`-Operation zur Initialisierung eines neuen Attributs (*Plays*), um zu verfolgen, wie oft der Song abgespielt wurde.

```
{
    TableName: "Music",
    Key: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today"
    },
    UpdateExpression: "SET Plays = :val",
    ExpressionAttributeValues: {
        ":val": 0
    },
    ReturnValues: "UPDATED_NEW"
}
```

Der Parameter `ReturnValues` wird auf `UPDATED_NEW` festgelegt. Hiermit werden die neuen Werte aktualisierter Attribute zurückgegeben. In diesem Fall wird 0 (Null) zurückgegeben.

Sobald dieser Song abgespielt wird, können wir die folgende `UpdateItem`-Operation verwenden, um das Attribut *Plays* um eins zu erhöhen.

```
{
    TableName: "Music",
    Key: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today"
    },
    UpdateExpression: "SET Plays = Plays + :incr",
    ExpressionAttributeValues: {
        ":incr": 1
    },
    ReturnValues: "UPDATED_NEW"
}
```

------
#### [ PartiQL for DynamoDB ]

Mit PartiQL verwenden Sie die `ExecuteStatement`-Operation zum Ändern eines Elements in einer Tabelle mit PartiQL `Update`-Anweisung.

Der Primärschlüssel für diese Tabelle besteht aus *Artist* und. *SongTitle* Sie müssen Werte für diese Attribute angeben.

```
UPDATE Music
SET RecordLabel ='Global Records'
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
```

Sie können wie im folgenden Beispiel auch mehrere Felder gleichzeitig ändern.

```
UPDATE Music
SET RecordLabel = 'Global Records'
SET AwardsWon = 10
WHERE Artist ='No One You Know' AND SongTitle='Call Me Today'
```

`Update` unterstützt außerdem *unteilbare Zähler*, dies sind Attribute vom Typ `Number`, die schrittweise erhöht oder verringert werden können. Unteilbare Zähler ähneln in vielerlei Hinsicht Sequenzgeneratoren, Identitätsspalten oder Feldern für die automatische Inkrementierung in SQL-Datenbanken.

Das folgende Beispiel ist eine `Update`-Anweisung zur Initialisierung eines neuen Attributs (*Plays*), um zu verfolgen, wie oft der Song abgespielt wurde.

```
UPDATE Music
SET Plays = 0
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
```

Sobald dieser Song abgespielt wird, können wir die folgende `Update`-Anweisung verwenden, um das Attribut *Spielt* um eins zu erhöhen.

```
UPDATE Music
SET Plays = Plays + 1
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
```

**Anmerkung**  
Codebeispiele, die `Update` und `ExecuteStatement` verwenden, finden Sie unter [Aktualisierungen für PartiQL-Anweisungen für DynamoDB](ql-reference.update.md).

------