Update Entity

La operación Update Entity actualiza una entidad existente en una tabla. La Update Entity operación reemplaza a toda la entidad y puede usar la operación para quitar propiedades.

Request

Puede construir la solicitud de la Update Entity siguiente manera. Se recomienda HTTPS. Reemplace myaccount por el nombre de la cuenta de almacenamiento y mytable por el nombre de la tabla. Reemplace myPartitionKey y myRowKey por el nombre de la clave de partición y la clave de fila que identifican la entidad que se va a actualizar.

Método URI de solicitud Versión de HTTP
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

La dirección de la entidad que se va a actualizar puede tomar una serie de formularios en el URI de solicitud. Consulte el protocolo OData para obtener más detalles.

URI del servicio de almacenamiento emulado

Cuando realice una solicitud en el servicio de almacenamiento emulado, especifique el nombre de host del emulador y el puerto de Azure Table Storage como 127.0.0.1:10002, seguido del nombre de la cuenta de almacenamiento emulada.

Método URI de solicitud Versión de HTTP
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Table Storage en el emulador de almacenamiento difiere de Azure Table Storage de varias maneras. Para más información, consulte Diferencias entre el emulador de almacenamiento y los servicios de Azure Storage.

Parámetros del identificador URI

Puede especificar los siguientes parámetros adicionales en el URI de solicitud.

Parámetro Descripción
timeout Opcional. El parámetro timeout se expresa en segundos. Para más información, consulte Establecimiento de tiempos de espera para las operaciones de Table Storage.

Encabezados de solicitud

En la tabla siguiente se describen los encabezados de solicitud requeridos y opcionales.

Encabezado de solicitud Descripción
Authorization Necesario. Especifica el esquema de autorización, el nombre de cuenta y la firma. Para obtener más información, vea Autorización de solicitudes a Azure Storage.
Date o x-ms-date Necesario. Especifica la hora universal coordinada (UTC) de la solicitud. Para obtener más información, vea Autorización de solicitudes a Azure Storage.
x-ms-version Opcional. Especifica la versión de la operación que se utiliza para esta solicitud. Para obtener más información, vea Versiones de los servicios de Azure Storage.
Content-Type Necesario. Especifica el tipo de contenido de la carga. Los valores posibles son application/atom+xml y application/json.

Para obtener más información sobre los tipos de contenido válidos, consulte Formato de carga para las operaciones de Table Storage.
Content-Length Necesario. Longitud del cuerpo de la solicitud.
If-Match Necesario. El cliente puede especificar para ETag la entidad en la solicitud para comparar con el ETag mantenido por el servicio con el fin de la simultaneidad optimista. La operación de actualización solo se realiza si el ETag enviado por el cliente coincide con el valor mantenido por el servidor. Esta coincidencia indica que el cliente no ha modificado la entidad desde que la recuperó.

Para forzar una actualización incondicional, establezca If-Match en el carácter comodín (*).
x-ms-client-request-id Opcional. Proporciona un valor opaco generado por el cliente con un límite de caracteres de 1 kibibyte (KiB) que se registra en los registros cuando se configura el registro. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes que recibe el servidor. Para más información, consulte Supervisión de Azure Table Storage.

Cuerpo de la solicitud

La Update Entity operación envía la entidad que se va a actualizar como un OData conjunto de entidades, que puede ser un JSON o una fuente Atom. Para obtener más información, consulte Inserción y actualización de entidades.

Nota

JSON es el formato de carga recomendado y es el único formato admitido para la versión 2015-12-11 y posteriores.

Solicitud de ejemplo

JSON (versión 2013-08-15 y posteriores)

En este ejemplo se muestra un URI de solicitud de ejemplo, los encabezados de solicitud asociados y el cuerpo de la solicitud para una fuente 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"  
}  

Fuente atom (versiones anteriores a 2015-12-11)

En este ejemplo se muestra un URI de solicitud de ejemplo, los encabezados de solicitud asociados y el cuerpo de la solicitud para una fuente 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 respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.

status code

Una operación correcta devuelve el código de estado 204 (Sin contenido). Para obtener información sobre los códigos de estado, consulte Códigos de error y estado yCódigos de error de Table Storage.

Encabezados de respuesta

La respuesta incluye los encabezados siguientes. La respuesta también puede incluir encabezados HTTP adicionales estándar. Todos los encabezados estándar se ajustan a la especificación del protocolo HTTP/1.1.

Encabezado de respuesta Descripción
ETag ETag para la entidad .
x-ms-request-id Este encabezado identifica de forma única la solicitud que se realizó y se puede usar para solucionar problemas de la solicitud. Para más información, consulte Solución de problemas de operaciones de API.
x-ms-version Indica la versión de Table Storage usada para ejecutar la solicitud. Este encabezado se devuelve para las solicitudes realizadas en la versión 2009-09-19 y versiones posteriores.
Date Valor de fecha y hora UTC que indica la hora en la que se inició la respuesta. El servicio genera este valor.
x-ms-client-request-id Puede usar este encabezado para solucionar problemas de solicitudes y respuestas correspondientes. El valor de este encabezado es igual al valor del x-ms-client-request-id encabezado, si está presente en la solicitud. El valor tiene como máximo 1024 caracteres ASCII visibles. Si el x-ms-client-request-id encabezado no está presente en la solicitud, este encabezado no estará presente en la respuesta.

Response body

Ninguno.

Respuesta de muestra

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  

Authorization

El propietario de la cuenta puede realizar esta operación. Además, cualquier persona con una firma de acceso compartido que tenga permiso para realizar esta operación puede hacerlo.

Comentarios

Al actualizar una entidad, debe especificar las PartitionKey propiedades del sistema y RowKey como parte de la operación de actualización.

Una entidad ETag proporciona simultaneidad optimista predeterminada para las operaciones de actualización. El ETag valor es opaco y no debe leerse ni confiarse en ella. Antes de que se produzca una operación de actualización, Table Storage comprueba que el valor actual ETag de la entidad es idéntico al ETag valor incluido con la solicitud de actualización en el If-Match encabezado. Si los valores son idénticos, Table Storage determina que la entidad no se ha modificado desde que se recuperó y continúa la operación de actualización.

Si la entidad ETag difiere de la especificada con la solicitud de actualización, se produce un error en la operación de actualización con el código de estado 412 (error de condición previa). Este error indica que la entidad se ha modificado en el servidor desde que se recuperó. Para resolver este error, recupere la entidad de nuevo y vuelva a emitir la solicitud.

Para forzar una operación de actualización incondicional, establezca el valor del encabezado If-Match en el carácter comodín (*) en la solicitud. Al pasar este valor a la operación, se invalida la simultaneidad optimista predeterminada y se omite cualquier error de coincidencia en ETag los valores.

Si falta el If-Match encabezado de la solicitud en la versión 2011-08-18 o posterior, el servicio realiza una operación insertar o reemplazar entidad (upsert). En versiones anteriores a 2011-08-18, el servicio devuelve el código de estado 400 (solicitud incorrecta).

Table Storage no conserva null los valores de las propiedades. Especificar una propiedad con un null valor equivale a omitir esa propiedad en la solicitud.

Nota

Puede aprovechar cualquier comportamiento para quitar una propiedad de una entidad.

Para escribir explícitamente una propiedad, especifique el tipo de datos adecuado OData estableciendo el m:type atributo dentro de la definición de propiedad en la fuente Atom. Para obtener más información sobre cómo escribir propiedades, vea Insertar y actualizar entidades.

Cualquier aplicación que pueda autorizar y enviar una solicitud HTTP PUT puede actualizar una entidad.

Para obtener información sobre cómo realizar operaciones de actualización por lotes, consulte Realización de transacciones de grupo de entidades.

Consulte también

Merge Entity
Autorización de solicitudes a Azure Storage
Establecimiento de los encabezados de versión del servicio de datos de OData
Estado y códigos de error
Códigos de error de Table Storage