

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Différences entre une base de données relationnelle (SQL) et DynamoDB lors de la modification de données dans une table
<a name="SQLtoNoSQL.UpdateData"></a>

Le langage SQL fournit l’instruction `UPDATE` pour modifier les données. Amazon DynamoDB utilise l’opération `UpdateItem` pour accomplir des tâches similaires.

**Topics**
+ [

## Modification de données dans une table avec SQL
](#SQLtoNoSQL.UpdateData.SQL)
+ [

## Modification de données dans une table dans DynamoDB
](#SQLtoNoSQL.UpdateData.DynamoDB)

## Modification de données dans une table avec SQL
<a name="SQLtoNoSQL.UpdateData.SQL"></a>

En SQL, la modification d’une ou plusieurs lignes s’effectue via l’instruction `UPDATE`. La clause `SET` spécifie de nouvelles valeurs pour une ou plusieurs colonnes, et la clause `WHERE` détermine les lignes qui sont modifiées. Voici un exemple.

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

Si aucune ligne ne correspond à la clause `WHERE`, l’instruction `UPDATE` n’a aucun effet.

## Modification de données dans une table dans DynamoDB
<a name="SQLtoNoSQL.UpdateData.DynamoDB"></a>

Dans DynamoDB, vous pouvez modifier un élément unique à l’aide de l’API DynamoDB ou de [PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html) (langage de requête compatible SQL). Si vous voulez modifier plusieurs éléments, vous devez utiliser plusieurs opérations.

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

Avec l’API DynamoDB, vous devez utiliser l’opération `UpdateItem` pour modifier un élément unique.

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

Vous devez spécifier les attributs `Key` de l’élément à modifier ainsi qu’une `UpdateExpression` pour spécifier les valeurs des attributs. `UpdateItem` se comporte comme une opération « upsert » (mise à jour/insertion). L’élément est mis à jour s’il existe dans la table, mais dans le cas contraire, un nouvel élément est ajouté (inséré).

`UpdateItem` prend en charge les *écritures conditionnelles*, où l’opération aboutit uniquement si un attribut `ConditionExpression` a la valeur true. Par exemple, l’opération `UpdateItem` suivante n’effectue pas la mise à jour, sauf si le prix de la chanson est supérieur ou égal à 2,00.

```
{
    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` prend également en charge les *compteurs atomiques*, ou les attributs de type `Number` qui peuvent être incrémentés ou décrémentés. Les compteurs atomiques sont similaires en de nombreuses façons aux générateurs de séquence, aux colonnes d’identité ou aux champs d’incrémentation automatique dans les bases de données SQL. 

Voici un exemple d’opération `UpdateItem` pour initialiser un nouvel attribut (*Plays*) et suivre le nombre de fois qu’une chanson a été écoutée.

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

Le paramètre `ReturnValues` est défini sur `UPDATED_NEW`, qui retourne les nouvelles valeurs de tous les attributs qui ont été mis à jour. Dans ce cas, la valeur 0 (zéro) est retournée.

Chaque fois que quelqu’un écoute cette chanson, nous pouvons utiliser l’opération `UpdateItem` suivante pour incrémenter la valeur *Plays* d’une unité.

```
{
    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 ]

Avec PartiQL, vous utilisez l’opération `ExecuteStatement` pour modifier un élément d’une table, à l’aide de l’instruction PartiQL `Update`.

La clé primaire de cette table comprend *Artist* et *SongTitle*. Vous devez spécifier les valeurs de ces attributs.

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

Vous pouvez également modifier plusieurs champs à la fois, tel qu’illustré dans l’exemple suivant.

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

`Update` prend également en charge les *compteurs atomiques*, ou les attributs de type `Number` qui peuvent être incrémentés ou décrémentés. Les compteurs atomiques sont similaires en de nombreuses façons aux générateurs de séquence, aux colonnes d’identité ou aux champs d’incrémentation automatique dans les bases de données SQL.

Voici un exemple d’instruction `Update` destinée à initialiser un nouvel attribut (*Plays* (Lectures)) et à suivre le nombre de fois où un morceau a été joué.

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

Chaque fois que quelqu’un écoute ce morceau, nous pouvons utiliser l’instruction `Update` suivante pour incrémenter la valeur *Plays* (Lectures) d’une unité.

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

**Note**  
Pour des exemples de code utilisant `Update` et `ExecuteStatement`, consultez [Instructions de mise à jour de PartiQL pour DynamoDB](ql-reference.update.md).

------