Update Entity

L'opération Update Entity met à jour une entité existante dans une table. L’opération Update Entity remplace l’entité entière et vous pouvez l’utiliser pour supprimer des propriétés.

Requête

Vous pouvez construire la Update Entity requête comme suit. HTTPS est recommandé. Remplacez myaccount par le nom de votre compte de stockage et mytable par le nom de votre table. Remplacez myPartitionKey et myRowKey par le nom de la clé de partition et de la clé de ligne qui identifient l’entité à mettre à jour.

Méthode URI de demande Version HTTP
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

L’adresse de l’entité à mettre à jour peut prendre plusieurs formes sur l’URI de demande. Pour plus d’informations, consultez le protocole OData .

URI de service de stockage émulé

Lorsque vous effectuez une requête auprès du service de stockage émulé, spécifiez le nom d’hôte de l’émulateur et le port Stockage Table Azure comme 127.0.0.1:10002, suivi du nom du compte de stockage émulé.

Méthode URI de demande Version HTTP
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Le stockage table dans l’émulateur de stockage diffère du stockage Table Azure de plusieurs manières. Pour plus d’informations, consultez Différences entre l’émulateur de stockage et les services de stockage Azure.

Paramètres URI

Vous pouvez spécifier les paramètres supplémentaires suivants sur l’URI de requête.

Paramètre Description
timeout facultatif. Le paramètre timeout est exprimé en secondes. Pour plus d’informations, consultez Définition de délais d’expiration pour les opérations de stockage table.

En-têtes de requête

Le tableau suivant décrit les en-têtes de demande obligatoires ou facultatifs.

En-tête de requête Description
Authorization Obligatoire. Spécifie le schéma d’autorisation, le nom du compte et la signature. Pour plus d’informations, consultez Autoriser les requêtes auprès du Stockage Azure.
Date ou x-ms-date Obligatoire. Spécifie la date/heure en temps universel coordonné (UTC) pour la requête. Pour plus d’informations, consultez Autoriser les requêtes auprès du Stockage Azure.
x-ms-version Optionnel. Spécifie la version de l'opération à utiliser pour cette demande. Pour plus d'informations, consultez la page Contrôle de version pour les services de Stockage Microsoft Azure.
Content-Type Obligatoire. Spécifie le type de contenu de la charge utile. Les valeurs possibles sont application/atom+xml et application/json.

Pour plus d’informations sur les types de contenu valides, consultez Format de charge utile pour les opérations de stockage table.
Content-Length Obligatoire. Longueur du corps de la demande.
If-Match Obligatoire. Le client peut spécifier le ETag pour l’entité sur la demande, à comparer à celui ETag géré par le service à des fins d’accès concurrentiel optimiste. L’opération de mise à jour est effectuée uniquement si le ETag envoyé par le client correspond à la valeur gérée par le serveur. Cette correspondance indique que l’entité n’a pas été modifiée depuis qu’elle a été récupérée par le client.

Pour forcer une mise à jour sans condition, définissez If-Match au caractère générique (*).
x-ms-client-request-id Optionnel. Fournit une valeur opaque générée par le client avec une limite de caractères de 1 kibioctet (Kio) enregistrée dans les journaux lors de la configuration de la journalisation. Nous vous recommandons vivement d’utiliser cet en-tête pour mettre en corrélation les activités côté client avec les demandes reçues par le serveur. Pour plus d’informations, consultez Surveiller le stockage Table Azure.

Corps de la demande

L’opération Update Entity envoie l’entité à mettre à jour en tant qu’ensemble d’entités OData , qui peut être un flux JSON ou Atom. Pour plus d’informations, consultez Insertion et mise à jour d’entités.

Remarque

JSON est le format de charge utile recommandé, et il s’agit du seul format pris en charge pour les versions 2015-12-11 et ultérieures.

Exemple de requête

JSON (version 2013-08-15 et ultérieure)

Cet exemple montre un exemple d'URI de demande, les en-têtes de demande associés, et le corps de la demande pour un flux JSON.

Request Headers:  
x-ms-version: 2015-12-11  
Accept-Charset: UTF-8  
Content-Type: application/json  
If-Match: *  
x-ms-date: Mon, 27 Jun 2016 18:10:24 GMT  
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=  
Content-Length: ###  
DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  
  
{  
   "Address":"Santa Clara",  
   "Age":23,  
   "AmountDue":200.23,  
   "CustomerCode@odata.type":"Edm.Guid",  
   "CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833",  
   "CustomerSince@odata.type":"Edm.DateTime",  
   "CustomerSince":"2008-07-10T00:00:00",  
   "IsActive":false,  
   "NumberOfOrders@odata.type":"Edm.Int64",  
   "NumberOfOrders":"255",  
   "PartitionKey":"mypartitionkey",  
   "RowKey":"myrowkey"  
}  

Flux Atom (versions antérieures à 2015-12-11)

Cet exemple montre un exemple d’URI de requête, les en-têtes de requête associés et le corps de la demande pour un flux Atom.

Request URI:  
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')  
  
Request Headers:  
x-ms-version: 2013-08-15  
Accept: application/atom+xml,application/xml  
Accept-Charset: UTF-8  
Content-Type: application/atom+xml  
If-Match: *  
x-ms-date: Wed, 20 Nov 2013 18:10:24 GMT  
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=  
Content-Length: ###  
DataServiceVersion: 1.0;NetFx  
MaxDataServiceVersion: 2.0;NetFx  
  
Request Body:  
<?xml version="1.0" encoding="utf-8"?>  
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">  
  <title />  
  <updated>2008-09-18T23:46:37.168836Z</updated>  
  <author>  
    <name />  
  </author>  
<id>https://myaccount.table.core.windows.net/mytable(PartitionKey='mypartitionkey',RowKey='myrowkey')</id>  
  <content type="application/xml">  
    <m:properties>  
      <d:Address>Santa Clara</d:Address>  
      <d:Age m:type="Edm.Int32">23</d:Age>  
      <d:AmountDue m:type="Edm.Double">200.23</d:AmountDue>  
      <d:CustomerCode m:type="Edm.Guid">c9da6455-213d-42c9-9a79-3e9149a57833</d:CustomerCode>  
      <d:CustomerSince m:type="Edm.DateTime">2008-07-10T00:00:00Z</d:CustomerSince>  
      <d:IsActive m:type="Edm.Boolean">false</d:IsActive>  
      <d:NumOfOrders m:type="Edm.Int64">255</d:NumOfOrders>  
      <d:PartitionKey>mypartitionkey</d:PartitionKey>  
      <d:RowKey>myrowkey</d:RowKey>  
    </m:properties>  
  </content>  
</entry>  

response

La réponse inclut un code d'état HTTP et un ensemble d'en-têtes de réponse.

Code d’état

Une opération réussie renvoie le code d'état 204 (Aucun contenu). Pour plus d’informations sur les codes status, consultez Codes d’état et d’erreur et Codes d’erreur stockage table.

En-têtes de réponse

Cette réponse comprend les en-têtes suivants. La réponse peut également inclure des en-têtes HTTP standard supplémentaires. Tous les en-têtes standard sont conformes à la spécification du protocole HTTP/1.1.

En-tête de réponse Description
ETag pour ETag l’entité .
x-ms-request-id Cet en-tête identifie de manière unique la demande qui a été effectuée et peut être utilisé pour la résolution des problèmes de la demande. Pour plus d’informations, consultez Résolution des problèmes liés aux opérations d’API.
x-ms-version Indique la version de Stockage Table utilisée pour exécuter la demande. Cet en-tête est renvoyé pour les demandes effectuées avec la version 2009-09-19 ou une version ultérieure.
Date Valeur de date/heure UTC qui indique l’heure à laquelle la réponse a été lancée. Le service génère cette valeur.
x-ms-client-request-id Vous pouvez utiliser cet en-tête pour résoudre les demandes et les réponses correspondantes. La valeur de cet en-tête est égale à la valeur de l’en-tête x-ms-client-request-id , s’il est présent dans la demande. La valeur est au maximum de 1 024 caractères ASCII visibles. Si l’en-tête x-ms-client-request-id n’est pas présent dans la requête, cet en-tête ne sera pas présent dans la réponse.

Response body

Aucun.

Exemple de réponse

Response Status:  
HTTP/1.1 204 No Content  
  
Response Headers:  
Connection: Keep-Alive  
x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d  
Content-Length: 0  
Cache-Control: no-cache  
Date: Mon, 27 Jun 2016 18:12:54 GMT  
ETag: W/"0x5B168C7B6E589D2"  
DataServiceVersion: 3.0;NetFx  
MaxDataServiceVersion: 3.0;NetFx  
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0  

Autorisation

Le propriétaire du compte peut effectuer cette opération. En outre, toute personne disposant d’une signature d’accès partagé qui a l’autorisation d’effectuer cette opération peut le faire.

Notes

Lorsque vous mettez à jour une entité, vous devez spécifier les propriétés système et RowKey dans le PartitionKey cadre de l’opération de mise à jour.

Une entité fournit une concurrence optimiste par défaut pour les opérations de ETag mise à jour. La ETag valeur est opaque et ne doit pas être lue ni basée sur. Avant qu’une opération de mise à jour ne se produise, le stockage Table vérifie que la valeur actuelle ETag de l’entité est identique à la valeur incluse dans la ETag demande de mise à jour dans l’en-tête If-Match . Si les valeurs sont identiques, le stockage Table détermine que l’entité n’a pas été modifiée depuis sa récupération et que l’opération de mise à jour se poursuit.

Si l’entité diffère de ETag celle spécifiée avec la demande de mise à jour, l’opération de mise à jour échoue avec status code 412 (Échec de la condition préalable). Cette erreur indique que l'entité a été modifiée sur le serveur depuis qu'elle a été récupérée. Pour résoudre cette erreur, récupérez de nouveau l'entité et réémettez la demande.

Pour forcer une opération de mise à jour sans condition, définissez la valeur de l'en-tête If-Match au caractère générique (*) dans la demande. Le passage de cette valeur à l’opération remplace la concurrence optimiste par défaut et ignore toute incompatibilité de ETag valeurs.

Si l’en-tête If-Match est absent de la requête dans la version 2011-08-18 ou ultérieure, le service effectue une opération Insérer ou remplacer une entité (upsert). Dans les versions antérieures à 2011-08-18, le service retourne status code 400 (requête incorrecte).

Le stockage table ne conserve null pas les valeurs pour les propriétés. Spécifier une propriété avec une null valeur équivaut à omettre cette propriété dans la requête.

Remarque

Vous pouvez tirer parti de l’un ou l’autre comportement pour supprimer une propriété d’une entité.

Pour taper explicitement une propriété, spécifiez le type de données approprié OData en définissant l’attribut dans la m:type définition de propriété dans le flux Atom. Pour plus d’informations sur les propriétés de saisie, consultez Insertion et mise à jour d’entités.

Toute application qui peut autoriser et envoyer une requête HTTP PUT peut mettre à jour une entité.

Pour plus d’informations sur l’exécution d’opérations de mise à jour par lots, consultez Exécution de transactions de groupe d’entités.

Voir aussi

Merge Entity
Autoriser les demandes à Stockage Azure
Définition des en-têtes de version du service de données OData
Codes d’état et d’erreur
Codes d’erreur stockage table