Update Entity (Обновление сущности)

Операция Update Entity обновляет существующую сущность в таблице. Операция Update Entity заменяет всю сущность, и вы можете использовать операцию для удаления свойств.

Запрос

Запрос можно создать Update Entity следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем учетной записи хранения, а mytable — именем таблицы. Замените myPartitionKey и myRowKey именем ключа секции и ключа строки, которые идентифицируют обновляемую сущность.

Метод Универсальный код ресурса (URI) запроса параметр "Версия HTTP"
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Адрес обновляемой сущности может принимать несколько форм в URI запроса. Дополнительные сведения см. в разделе Протокол OData .

URI эмулированной службы хранилища

При выполнении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт хранилища таблиц Azure в качестве 127.0.0.1:10002, за которым следует эмулированное имя учетной записи хранения.

Метод Универсальный код ресурса (URI) запроса параметр "Версия HTTP"
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

Хранилище таблиц в эмуляторе хранения отличается от хранилища таблиц Azure несколькими способами. Дополнительные сведения см. в статье Различия между эмулятором хранения и службами хранилища Azure.

Параметры универсального кода ресурса (URI)

В URI запроса можно указать следующие дополнительные параметры.

Параметр Описание
timeout Необязательный элемент. Параметр timeout указывается в секундах. Дополнительные сведения см. в разделе Настройка времени ожидания для операций хранилища таблиц.

Заголовки запросов

В следующей таблице перечислены обязательные и необязательные заголовки запросов.

Заголовок запроса Описание
Authorization Обязательный. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure.
Date или x-ms-date Обязательный. Задает время запроса в формате UTC. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure.
x-ms-version Необязательный элемент. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure.
Content-Type Обязательный. Указывает тип содержимого для полезных данных. Возможные значения: application/atom+xml и application/json.

Дополнительные сведения о допустимых типах контента см. в разделе Формат полезных данных для операций хранилища таблиц.
Content-Length Обязательный. Длина текста запроса.
If-Match Обязательный. Клиент может указать ETag для сущности в запросе , чтобы сравнить с ETag поддерживаемым службой для целей оптимистичного параллелизма. Операция обновления выполняется только в том случае, если объект , ETag отправленный клиентом, соответствует значению, поддерживаемму сервером. Это соответствие указывает, что сущность не была изменена с момента получения клиентом.

Чтобы выполнить безусловное обновление, задайте для параметра If-Match значение символа-шаблона "*".
x-ms-client-request-id Необязательный элемент. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 кибибайт (КиБ), которое записывается в журналы при настройке ведения журнала. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. Дополнительные сведения см. в статье Мониторинг хранилища таблиц Azure.

Текст запроса

Операция Update Entity отправляет сущность для обновления в виде OData набора сущностей, который может быть либо json, либо канал Atom. Дополнительные сведения см. в статье Вставка и обновление сущностей.

Примечание

JSON — это рекомендуемый формат полезных данных, и это единственный формат, поддерживаемый для версии 2015-12-11 и более поздних версий.

Пример запроса

JSON (версия 15.08.2013 и более поздняя)

В этом примере приведен образец URI запроса, соответствующие заголовки и текст запроса для канала 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"  
}  

Веб-канал Atom (версии, предшествующие 11.12.2015)

В этом примере показан пример URI запроса, связанные заголовки запроса и текст запроса для веб-канала 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>  

Ответ

Ответ включает код состояния HTTP и набор заголовков ответа.

Код состояния

Успешная операция возвращает код состояния 204 (нет контента). Сведения о кодах состояния см. в разделах Коды состояний и ошибок и Коды ошибок хранилища таблиц.

Заголовки ответов

Ответ содержит следующие заголовки. Ответ также может содержать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.

Заголовок ответа Описание
ETag Объект ETag для сущности.
x-ms-request-id Этот заголовок однозначно идентифицирует выполненный запрос и может использоваться для устранения неполадок с запросом. Дополнительные сведения см. в разделе Устранение неполадок операций API.
x-ms-version Указывает версию хранилища таблиц, используемой для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.
Date Значение даты и времени в формате UTC, указывающее время, в которое был инициирован ответ. Служба создает это значение.
x-ms-client-request-id Этот заголовок можно использовать для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению заголовка x-ms-client-request-id , если он присутствует в запросе. Значение равно не более 1024 видимых символов ASCII. Если заголовок x-ms-client-request-id отсутствует в запросе, этот заголовок не будет присутствовать в ответе.

Текст ответа

Нет.

Пример ответа

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  

Авторизация

Владелец учетной записи может выполнить эту операцию. Кроме того, любой пользователь с подписанным URL-адресом, имеющий разрешение на выполнение этой операции, может сделать это.

Комментарии

При обновлении сущности PartitionKey необходимо указать системные свойства и RowKey в рамках операции обновления.

Сущность ETag обеспечивает оптимистичный параллелизм по умолчанию для операций обновления. Значение ETag является непрозрачным и не должно читаться или полагаться на нее. Перед выполнением операции обновления хранилище таблиц проверяет, совпадает ли текущее ETag значение сущности со значением, включенным в запрос на обновление в заголовке If-Match .ETag Если значения идентичны, хранилище таблиц определяет, что сущность не была изменена с момента ее извлечения, и операция обновления продолжается.

Если сущность отличается от сущности ETag , указанной в запросе на обновление, операция обновления завершается ошибкой с кодом состояния 412 (сбой предварительного условия). Эта ошибка указывает, что сущность была изменена на сервере с момента ее получения. Чтобы устранить эту ошибку, следует получить сущность снова и повторить запрос.

Чтобы выполнить безусловную операцию обновления, укажите в запросе заголовок If-Match с символом-шаблоном "*". Передача этого значения в операцию переопределяет оптимистичный параллелизм по умолчанию и игнорирует несоответствие значений ETag .

Если заголовок If-Match отсутствует в запросе в версии 2011-08-18 или более поздней, служба выполняет операцию вставки или замены сущности (upsert). В версиях, предшествующих 18.08.2011, служба возвращает код состояния 400 (недопустимый запрос).

Хранилище таблиц не сохраняет null значения свойств. Указание свойства со значением null эквивалентно пропуску этого свойства в запросе.

Примечание

Вы можете воспользоваться преимуществами любого поведения, чтобы удалить свойство из сущности.

Чтобы явно ввести свойство, укажите соответствующий OData тип данных, задав m:type атрибут в определении свойства в веб-канале Atom. Дополнительные сведения о вводе свойств см. в разделе Вставка и обновление сущностей.

Любое приложение, которое может авторизовать и отправить HTTP-запрос PUT , может обновить сущность.

Сведения о выполнении операций пакетного обновления см. в разделе Выполнение транзакций группы сущностей.

См. также раздел

Merge Entity (Слияние сущностей)
Авторизация запросов к службе хранилища Azure
Настройка заголовков версии службы данных OData
Коды состояний и ошибок
Коды ошибок хранилища таблиц