Exportar (0) Imprimir
Expandir todo

Insert Or Replace Entity

Actualizado: febrero de 2014

La operación Insert Or Replace Entity reemplaza una entidad existente o inserta una nueva si no existe en la tabla. Puesto que esta operación puede insertar o actualizar una entidad, también se denomina operación upsert.

La solicitud Insert Or Replace Entity se puede construir como sigue. Se recomienda HTTPS. Reemplace los valores siguientes por los que considere adecuados:

  • myaccount por el nombre de la cuenta de almacenamiento

  • mytable por el nombre de la tabla

  • myPartitionKey y myRowKey por el nombre de la clave de partición y de la clave de fila de 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

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

PUT

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 los servicios de almacenamiento de Azure.

Ninguno.

En la tabla siguiente se describen los encabezados de solicitud 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 bien 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

Obligatorio, 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 Control de 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 que se graba en los registros de análisis cuando el registro de análisis de almacenamiento está habilitado. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes recibidas por el servidor. Para obtener más información, vea Acerca del registro del análisis de almacenamiento y Registro de Windows Azure: usar registros para realizar el seguimiento de las solicitudes de almacenamiento.

La operación Insert Or Replace Entity envía la entidad que se va a insertar como un conjunto de entidades OData, que puede ser una fuente JSON o Atom. 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 (Sin contenido).

Para obtener información acerca de los códigos de estado, vea Códigos de estado y 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 cumplen 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 Solucionar problemas relacionados con las operaciones de la 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: a continuación se muestra una respuesta y una solicitud de Atom de ejemplo:

PUT 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='myrowkey1')</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>
      <d:Timestamp m:type="Edm.DateTime">2011-08-30T18:09:37.9557508Z</d:Timestamp>
    </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:

PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')
The request is sent with the following headers:
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 operación Insert Or Replace Entity no utiliza el encabezado If-Match y se debe llamar con la versión 2011-08-18 u otra más reciente. Estos atributos distinguen esta operación de la operación Update Entity.

Si la operación Insert Or Replace Entity se utiliza para reemplazar una entidad, las propiedades de la entidad anterior se quitarán si la nueva entidad no las define. Las propiedades con un valor NULL también se quitarán.

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

Los valores PartitionKey y RowKey deben ser valores de cadena; cada valor de clave puede tener un tamaño máximo de 64 KB. 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 en 0000001 para garantizar una ordenación correcta.

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

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

Para obtener más información sobre cómo realizar operaciones por lotes, vea Realizar transacciones con grupos de entidades.

Vea también

Mostrar:
© 2014 Microsoft