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
Коды состояний и ошибок
Коды ошибок хранилища таблиц