Infoga eller sammanfoga entitet
Åtgärden Insert Or Merge Entity
uppdaterar en befintlig entitet eller infogar en ny entitet om den inte finns i tabellen. Eftersom den här åtgärden kan infoga eller uppdatera en entitet kallas den även för en upsert-åtgärd .
Förfrågan
Du kan skapa begäran på Insert Or Merge Entity
följande sätt. HTTPS rekommenderas. Ersätt följande värden med dina egna:
myaccount
med namnet på ditt lagringskontomytable
med namnet på tabellenmyPartitionKey
ochmyRowKey
med namnet på partitionsnyckeln och radnyckeln för entiteten som ska uppdateras
Metod | URI för förfrågan | HTTP-version |
---|---|---|
MERGE |
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
Emulerad lagringstjänst
När du gör en begäran mot den emulerade lagringstjänsten anger du emulatorns värdnamn och Azure Table Storage-porten som 127.0.0.1:10002, följt av det emulerade lagringskontonamnet.
Metod | URI för förfrågan | HTTP-version |
---|---|---|
MERGE |
http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
Table Storage i Storage-emulatorn skiljer sig från Azure Table Storage på flera olika sätt. Mer information finns i Skillnader mellan Storage-emulatorn och Azure Storage-tjänsterna.
URI-parametrar
Du kan ange följande ytterligare parameter i begärande-URI:n.
Parameter | Beskrivning |
---|---|
timeout |
Valfritt. Parametern timeout uttrycks i sekunder. Mer information finns i Ställa in tidsgränser för Table Storage-åtgärder. |
Begärandehuvuden
I följande tabell beskrivs obligatoriska och valfria begärandehuvuden.
Begärandehuvud | Beskrivning |
---|---|
Authorization |
Krävs. Anger auktoriseringsschema, kontonamn och signatur. Mer information finns i Auktorisera begäranden till Azure Storage. |
Date eller x-ms-date |
Krävs. Anger Coordinated Universal Time (UTC) för begäran. Mer information finns i Auktorisera begäranden till Azure Storage. |
x-ms-version |
Krävs. Måste anges till 2011-08-18 eller senare. Anger vilken version av åtgärden som ska användas för den här begäran. Mer information finns i Versionshantering för Azure Storage-tjänsterna. |
Content-Type |
Krävs. Anger nyttolastens innehållstyp. Möjliga värden är application/atom+xml och application/json .Mer information om giltiga innehållstyper finns i Nyttolastformat för Table Storage-åtgärder. |
Content-Length |
Krävs. Längden på begärandetexten. |
x-ms-client-request-id |
Valfritt. Tillhandahåller ett klientgenererat, täckande värde med en teckengräns på 1 kibibyte (KiB) som registreras i loggarna när loggning har konfigurerats. Vi rekommenderar starkt att du använder det här huvudet för att korrelera aktiviteter på klientsidan med begäranden som servern tar emot. Mer information finns i Övervaka Azure Table Storage. |
Begärandetext
Åtgärden Insert Or Merge Entity
skickar entiteten som ska infogas som en entitetsuppsättning OData
. Den här entitetsuppsättningen kan vara antingen en Atom- eller JSON-nyttolast. Mer information finns i Infoga och uppdatera entiteter.
Anteckning
JSON är det rekommenderade nyttolastformatet och är det enda format som stöds för version 2015-12-11 och senare.
Svarsåtgärder
Svaret innehåller en HTTP-statuskod och en uppsättning svarshuvuden.
Statuskod
En lyckad åtgärd returnerar statuskod 204 (No Content
). Information om statuskoder finns i Status- och felkoder och Tabelllagringsfelkoder.
Svarshuvuden
Svaret innehåller följande rubriker. Svaret kan även innehålla ytterligare STANDARD HTTP-huvuden. Alla standardhuvuden överensstämmer med http/1.1-protokollspecifikationen.
Svarsrubrik | Description |
---|---|
ETag |
ETag för entiteten. |
x-ms-request-id |
Identifierar den begäran som gjordes unikt och kan användas för att felsöka begäran. Mer information finns i Felsöka API-åtgärder. |
x-ms-version |
Anger vilken version av Table Storage som användes för att köra begäran. Det här huvudet returneras för begäranden som görs mot version 2009-09-19 och senare. |
Date |
Ett datum-/tidsvärde för UTC som anger den tid då svaret initierades. Tjänsten genererar det här värdet. |
x-ms-client-request-id |
Kan användas för att felsöka begäranden och motsvarande svar. Värdet för det här huvudet är lika med värdet för x-ms-client-request-id huvudet, om det finns i begäran. Värdet är högst 1 024 synliga ASCII-tecken. Om rubriken x-ms-client-request-id inte finns i begäran finns den inte i svaret. |
Själva svaret
Inga.
Auktorisering
Kontoägaren kan utföra den här åtgärden. Dessutom kan alla med en signatur för delad åtkomst som har behörighet att utföra den här åtgärden göra det.
Exempel på begäran och svar
I följande exempel visas exempelbegäranden som använder JSON- och Atom-feeds.
Anteckning
JSON är det rekommenderade nyttolastformatet och är det enda format som stöds för version 2015-12-11 och senare.
JSON (version 2013-08-15 och senare)
Följande är en exempelbegäran och ett svar som använder JSON.
MERGE https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')
Begäran skickas med följande rubriker:
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
Begäran skickas med följande JSON-brödtext:
{
"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"
}
När begäran har skickats returneras följande svar:
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
Atomfeed (versioner före 2015-12-11)
Följande är en exempelbegäran och ett svar som använder Atom:
MERGE https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')
Begäran skickas med följande rubriker:
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
Begäran skickas med följande XML-brödtext:
<?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="https://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>
När begäran har skickats returneras följande svar:
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
Kommentarer
Åtgärden Insert Or Merge Entity
använder verbet MERGE
. Du måste anropa åtgärden med hjälp av versionen 2011-08-18 eller senare. Dessutom använder If-Match
den här åtgärden inte huvudet. Dessa attribut skiljer den här åtgärden från Update Entity
åtgärden, även om begärandetexten är densamma för båda åtgärderna.
Om du använder åtgärden Insert Or Merge Entity
för att sammanfoga en entitet behålls alla egenskaper från den tidigare entiteten, om begäran inte definierar eller inkluderar dem. Egenskaper med ett null
värde behålls också.
När du anropar Insert or Merge Entity
åtgärden måste du ange värden för systemegenskaperna PartitionKey
och RowKey
. Tillsammans utgör dessa egenskaper primärnyckeln och måste vara unika i tabellen.
PartitionKey
Både värdena och RowKey
måste vara strängvärden.
PartitionKey
och RowKey
värden kan vara upp till 1 024 tecken stora. Om du använder ett heltalsvärde för nyckelvärdet bör du konvertera heltal till en sträng med fast bredd. Detta beror på att de är kanoniskt sorterade. Konvertera till exempel värdet 1
till 0000001
för att säkerställa korrekt sortering.
Om du uttryckligen vill skriva en egenskap anger du lämplig OData
typ genom att ange m:type
attributet i egenskapsdefinitionen i Atom-feeden. Mer information om hur du skriver egenskaper finns i Infoga och uppdatera entiteter.
Alla program som kan auktorisera och skicka en HTTP MERGE
begäran kan infoga eller uppdatera en entitet.
Information om hur du utför batch-upsert-åtgärder finns i Utföra entitetsgrupptransaktioner.
Se även
Auktorisera begäranden till Azure Storage
Ange versionshuvuden för OData-datatjänsten
Infoga och uppdatera entiteter
Status- och felkoder
Felkoder för Table Storage