エンティティの更新

Update Entity 操作は、テーブル内の既存のエンティティを更新します。 操作によって Update Entity エンティティ全体が置き換えられ、操作を使用してプロパティを削除できます。

要求

要求は Update Entity 次のように構築できます。 HTTPS が推奨されます。 myaccount をストレージ アカウントの名前に置き換えmytable、テーブルの名前に置き換えます。 myPartitionKeymyRowKey を、更新するエンティティを識別するパーティション キーと行キーの名前に置き換えます。

Method 要求 URI HTTP バージョン
PUT https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

更新するエンティティのアドレスは、要求 URI で複数のフォームを取得できます。 詳細については、 OData プロトコル に関するページを参照してください。

エミュレートされたストレージ サービス URI

エミュレートされたストレージ サービスに対して要求を行う場合は、エミュレーターのホスト名と Azure Table Storage ポートを として 127.0.0.1:10002指定し、その後にエミュレートされたストレージ アカウント名を指定します。

Method 要求 URI HTTP バージョン
PUT http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') HTTP/1.1

ストレージ エミュレーターの Table Storage は、Azure Table Storage といくつかの点で異なります。 詳細については、「 ストレージ エミュレーターと Azure Storage サービスの違い」を参照してください。

URI パラメーター

要求 URI には、次の追加パラメーターを指定できます。

パラメーター 説明
timeout 省略可能。 timeout パラメーターは、秒単位で表されます。 詳細については、「 Table Storage 操作のタイムアウトの設定」を参照してください。

要求ヘッダー

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。

要求ヘッダー 説明
Authorization 必須。 承認スキーム、アカウント名、署名を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
Date または x-ms-date 必須。 要求に対して協定世界時 (UTC) を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
x-ms-version 省略可能。 この要求に使用する操作のバージョンを指定します。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。
Content-Type 必須。 ペイロードのコンテンツ タイプを指定します。 設定可能な値は application/atom+xml および application/json です。

有効なコンテンツ タイプの詳細については、「 Table Storage 操作のペイロード形式」を参照してください。
Content-Length 必須。 要求本文の長さです。
If-Match 必須。 クライアントは、オプティミスティック コンカレンシーを目的として、サービスによって管理されている と比較ETagするために、要求でエンティティの を指定ETagできます。 更新操作は、クライアントによって送信された が ETag サーバーによって管理されている値と一致する場合にのみ実行されます。 この一致は、エンティティがクライアントによって取得されてから変更されていないことを示します。

無条件更新を強制するには、If-Match をワイルドカード文字 (*) に設定します。
x-ms-client-request-id 省略可能。 ログ記録の構成時にログに記録される 1 kibibyte (KiB) 文字制限を使用して、クライアントによって生成された不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティとサーバーが受信する要求を関連付けるよう強くお勧めします。 詳細については、「 Azure Table Storage の監視」を参照してください。

要求本文

この操作により Update Entity 、エンティティ セットとして OData 更新されるエンティティが送信されます。これは、JSON または Atom フィードのいずれかになります。 詳細については、「 エンティティの挿入と更新」を参照してください。

注意

JSON は推奨されるペイロード形式であり、バージョン 2015-12-11 以降でサポートされている唯一の形式です。

要求のサンプル

JSON (バージョン 2013-08-15 以降)

次の例は、要求 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 フィード (2015-12-11 より前のバージョン)

この例では、サンプル要求 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 (No Content) が返されます。 状態コードの詳細については、「 状態とエラー コード 」および 「Table Storage のエラー コード」を参照してください。

応答ヘッダー

応答には次のヘッダーが含まれます。 応答には、追加の標準 HTTP ヘッダーを含めることもできます。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています

応答ヘッダー 説明
ETag ETagエンティティの 。
x-ms-request-id このヘッダーは、行われた要求を一意に識別し、要求のトラブルシューティングに使用できます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。
x-ms-version 要求の実行に使用される Table Storage のバージョンを示します。 このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。
Date 応答が開始された時刻を示す UTC 日付/時刻値。 サービスによってこの値が生成されます。
x-ms-client-request-id このヘッダーを使用して、要求と対応する応答のトラブルシューティングを行うことができます。 このヘッダーの値は、要求に存在する x-ms-client-request-id 場合、ヘッダーの値と同じです。 この値は、最大 1,024 文字の 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  

承認

アカウント所有者は、この操作を実行できます。 さらに、この操作を実行するアクセス許可を持つ共有アクセス署名を持つすべてのユーザーがこれを行うことができます。

注釈

エンティティを更新するときは、更新操作の PartitionKey 一部として および RowKey システム プロパティを指定する必要があります。

エンティティの ETag は、更新操作の既定のオプティミスティック コンカレンシーを提供します。 値は ETag 不透明であり、読み取ったり依存したりしないでください。 更新操作が発生する前に、Table Storage はエンティティの現在ETagの値がヘッダーの更新要求If-Matchに含まれる値と同じETagであることを確認します。 値が同一の場合、Table Storage はエンティティが取得されてから変更されていないことを判断し、更新操作が続行されます。

エンティティ ETag が更新要求で指定されたエンティティと異なる場合、更新操作は状態コード 412 (前提条件に失敗) で失敗します。 このエラーは、取得後にサーバーでエンティティが変更されたことを示します。 このエラーを解決するには、エンティティを再度取得し、要求を再発行します。

無条件更新操作を強制するには、要求で If-Match ヘッダーの値をワイルドカード文字 (*) に設定します。 この値を操作に渡すと、既定のオプティミスティック コンカレンシーがオーバーライドされ、値の ETag 不一致は無視されます。

If-Matchバージョン 2011-08-18 以降の要求にヘッダーがない場合、サービスはエンティティの挿入または置換 (upsert) 操作を実行します。 2011-08-18 より前のバージョンでは、サービスは状態コード 400 (無効な要求) を返します。

Table Storage では、プロパティの値は保持 null されません。 値を持つプロパティを null 指定することは、要求でそのプロパティを省略することと同じです。

注意

どちらの動作も利用して、エンティティからプロパティを削除できます。

プロパティを明示的に入力するには、Atom フィードのプロパティ定義内で 属性をm:type設定して、適切なODataデータ型を指定します。 プロパティの入力の詳細については、「 エンティティの挿入と更新」を参照してください。

HTTP PUT 要求を承認および送信できるアプリケーションは、エンティティを更新できます。

バッチ更新操作の実行については、「 エンティティ グループ トランザクションの実行」を参照してください。

関連項目

エンティティの統合
Azure Storage への要求を承認する
OData データ サービスのバージョン ヘッダーの設定
状態コードとエラー コード
Table Storage のエラー コード