Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Insert Or Merge Entity

 

La Insert Or Merge Entity operación actualiza una entidad existente o inserta una nueva entidad si no existe en la tabla. Dado que esta operación puede insertar o actualizar una entidad, también conocido como es un upsert operación.

El Insert Or Merge Entity solicitud se puede generar como sigue. Se recomienda HTTPS. Reemplace los valores siguientes por los que considere adecuados:

  • myaccount con el nombre de la cuenta de almacenamiento

  • mytable con el nombre de la tabla

  • myPartitionKey y myRowKey con el nombre de la clave de partición y clave de fila para la entidad que se actualiza

Método

URI de solicitud

Versión de HTTP

MERGE

https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey')

HTTP/1.1

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

Método

URI de solicitud

Versión de HTTP

MERGE

http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey')

HTTP/1.1

El servicio Tabla del emulador de almacenamiento presenta algunas diferencias respecto al servicio Tabla de Windows® Azure™. Para obtener más información, vea diferencias entre el emulador de almacenamiento y servicios de almacenamiento de Azure.

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

Encabezado de solicitud

Descripción

Authorization

Requerido. Especifica el esquema de autenticación, el nombre de la cuenta y la firma. Para obtener más información, vea Autenticación para los servicios de almacenamiento de Azure.

Date o x-ms-date

Requerido. Especifica la hora universal coordinada (UTC) para la solicitud. Para obtener más información, vea Autenticación para los servicios de almacenamiento de Azure.

x-ms-version

Requerido. Se debe establecer en 2011-08-18 o en una versión más reciente. 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 almacenamiento de Azure.

Content-Type

Requerido. Especifica el tipo de contenido de la carga. Los valores posibles son application/atom+xml y application/json.

Para obtener más información acerca de los tipos de contenido válidos, vea Formato de carga para las operaciones del servicio Tabla.

Content-Length

Requerido. La longitud del cuerpo de la solicitud.

x-ms-client-request-id

Opcional. Proporciona un valor opaco generado por el cliente con un límite de caracteres de 1 KB registrado en los registros de análisis cuando está habilitado registro del análisis de almacenamiento. Es muy recomendable usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes recibidas por el servidor. Para obtener más información, consulte Acerca del registro del análisis de almacenamiento y registro de Azure: Usar registros para seguir las solicitudes de almacenamiento.

La Insert Or Merge Entity operación envía la entidad que se va a insertar como un conjunto de entidades OData, que puede ser carga una Atom o JSON. Para obtener más información, vea Insertar y actualizar entidades.

La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.

Una operación correcta devuelve el código de estado 204 (No Content).

Para obtener información acerca de los códigos de estado, consulte Estado y códigos de Error y Códigos de error del servicio Tabla.

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

Encabezado de respuesta

Descripción

ETag

La ETag para la entidad.

x-ms-request-id

Este encabezado identifica de forma única la solicitud que se realizó y se puede utilizar para solucionar problemas relacionados con esta. Para obtener más información, vea Solución de problemas de las operaciones de API.

x-ms-version

Indica la versión del servicio Tabla utilizada 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 generado por el servicio que indica la hora a la que se inició la respuesta.

Esta operación la puede realizar el propietario de la cuenta y cualquiera que tenga una firma de acceso compartido con permiso para realizar esta operación.

Atom: El siguiente es un ejemplo de solicitud de Atom y la respuesta:

MERGE https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')

La solicitud se envía con los encabezados siguientes:

x-ms-version: 2013-08-15 Accept: application/atom+xml,application/xml Accept-Charset: UTF-8 Content-Type: application/atom+xml x-ms-date: Tue, 12 Nov 2013 18:10:24 GMT Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o= Content-Length: 1135 DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx

La solicitud se envía con el cuerpo XML siguiente:

<?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>2013-11-12T18:09: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>myrowkey1</d:RowKey> </m:properties> </content> </entry>

Una vez enviada la solicitud, se devuelve la respuesta siguiente:

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

JSON: a continuación se muestra una respuesta y una solicitud de JSON de ejemplo:

MERGE https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')

La solicitud se envía con los encabezados siguientes:

x-ms-version: 2013-08-15 Content-Type: application/json x-ms-date: Tue, 30 Aug 2013 18:10:24 GMT Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o= Content-Length: 1135 DataServiceVersion: 3.0;NetFx MaxDataServiceVersion: 3.0;NetFx

La solicitud se envía con el cuerpo JSON siguiente:

{ "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" }

Una vez enviada la solicitud, se devuelve la respuesta siguiente:


HTTP/1.1 204 No Content Connection: Keep-Alive x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d Content-Length: 0 Cache-Control: no-cache Date: Tue, 30 Aug 2013 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

La Insert Or Merge Entity operación utiliza el verbo MERGE y debe ser llamado con la versión 2011-08-18 o posterior. Además, no utiliza el encabezado If-Match. Estos atributos distinguen esta operación desde el Update Entity operación, aunque el cuerpo de la solicitud es el mismo para ambas operaciones.

Si el Insert Or Merge Entity operación se usa para combinar una entidad, las propiedades de la entidad anterior se conservarán si la solicitud no definir o incluirlos. Las propiedades con un valor NULL también se conservarán.

Al llamar a la Insert or Merge Entity operación, debe especificar valores para los PartitionKey y RowKey las propiedades del sistema. Estas dos propiedades juntas forman la clave principal y deben ser únicas dentro de la tabla.

Tanto el PartitionKey y RowKey valores deben ser valores de cadena; cada valor de clave puede ser de hasta 64 KB de tamaño. Si utiliza un valor entero para el valor de clave, debe convertirlo en una cadena de longitud fija, ya que se ordenan de forma canónica. Por ejemplo, debe convertir el valor 1 para 0000001 para asegurar un orden correcto.

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

Cualquier aplicación que pueda autenticar y enviar una solicitud MERGE HTTP puede insertar o actualizar una entidad.

Para obtener información acerca de cómo realizar operaciones por lotes, vea Realizar transacciones de grupos de entidades.

Mostrar: