Entitás beszúrása vagy egyesítése
A Insert Or Merge Entity
művelet frissít egy meglévő entitást, vagy beszúr egy új entitást, ha az nem létezik a táblában. Mivel ez a művelet beszúrhat vagy frissíthet egy entitást, upsert műveletnek is nevezik.
Kérés
A kérést az Insert Or Merge Entity
alábbiak szerint hozhatja létre. A HTTPS használata ajánlott. Cserélje le a következő értékeket a saját értékére:
myaccount
a tárfiók nevévelmytable
a tábla nevévelmyPartitionKey
ésmyRowKey
a frissítendő entitás partíciókulcsának és sorkulcsának nevével
Metódus | Kérés URI-ja | HTTP-verzió |
---|---|---|
MERGE |
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
Emulált tárolási szolgáltatás
Amikor kérést küld az emulált tárolási szolgáltatásra, adja meg az emulátor gazdanevét és az Azure Table Storage-portot 127.0.0.1:10002 formátumban, majd az emulált tárfiók nevét.
Metódus | Kérés URI-ja | HTTP-verzió |
---|---|---|
MERGE |
http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
A Storage emulátorban található Table Storage többféleképpen különbözik az Azure Table Storage-tól. További információ: A Storage emulátor és az Azure Storage-szolgáltatások közötti különbségek.
URI-paraméterek
A kérelem URI-ján a következő további paramétert adhatja meg.
Paraméter | Leírás |
---|---|
timeout |
Választható. A timeout paraméter másodpercben van kifejezve. További információ: Időtúllépések beállítása a Table Storage-műveletekhez. |
Kérésfejlécek
Az alábbi táblázat a szükséges és nem kötelező kérelemfejléceket ismerteti.
Kérelem fejléce | Leírás |
---|---|
Authorization |
Kötelező. Megadja az engedélyezési sémát, a fióknevet és az aláírást. További információ: Kérelmek engedélyezése az Azure Storage-ba. |
Date vagy x-ms-date |
Kötelező. Megadja a kérés egyezményes világidő (UTC) formátumban kifejezett időpontját. További információ: Kérelmek engedélyezése az Azure Storage-ba. |
x-ms-version |
Kötelező. A 2011-08-18-18-ra vagy újabbra kell állítani. A kérelemhez használandó művelet verzióját adja meg. További információ: Az Azure Storage-szolgáltatások verziószámozása. |
Content-Type |
Kötelező. Megadja a hasznos adat tartalomtípusát. A lehetséges értékek a következők: application/atom+xml és application/json .Az érvényes tartalomtípusokkal kapcsolatos további információkért lásd: Payload format for Table Storage operations (Hasznos adatformátum a Table Storage-műveletekhez). |
Content-Length |
Kötelező. A kérelem törzsének hossza. |
x-ms-client-request-id |
Választható. Ügyfél által generált, átlátszatlan értéket biztosít egy 1 kibibyte (KiB) karakterkorláttal, amelyet a naplózás konfigurálásakor rögzít a naplókban. Javasoljuk, hogy ezt a fejlécet használva korrelálja az ügyféloldali tevékenységeket a kiszolgáló által kapott kérésekkel. További információ: Az Azure Table Storage monitorozása. |
A kérés törzse
A Insert Or Merge Entity
művelet elküldi a beszúrni kívánt entitást egy entitáskészletként OData
. Ez az entitáskészlet lehet Atom vagy JSON hasznos adat. További információ: Entitások beszúrása és frissítése.
Megjegyzés
A JSON az ajánlott hasznos adatformátum, és ez az egyetlen támogatott formátum a 2015-12-11-es és újabb verziókban.
Reagálás
A válasz egy HTTP-állapotkódot és válaszfejléceket tartalmaz.
Állapotkód
A sikeres művelet a 204 -os állapotkódot adja vissza (No Content
). Az állapotkódokkal kapcsolatos információkért lásd: Állapot- és hibakódok és Table Storage-hibakódok.
Válaszfejlécek
A válasz a következő fejléceket tartalmazza. A válasz további szabványos HTTP-fejléceket is tartalmazhat. Minden szabványos fejléc megfelel a HTTP/1.1 protokoll specifikációjának.
Válaszfejléc | Description |
---|---|
ETag |
Az ETag entitáshoz tartozó. |
x-ms-request-id |
Egyedileg azonosítja a kérést, amely a kérés hibaelhárításához használható. További információ: API-műveletek hibaelhárítása. |
x-ms-version |
A Table Storage kérés futtatásához használt verzióját jelzi. Ez a fejléc lesz visszaadva a 2009-09-19-es és újabb verzióval kapcsolatos kérésekhez. |
Date |
UTC dátum/idő érték, amely a válasz indításának időpontját jelzi. Ezt az értéket a szolgáltatás hozza létre. |
x-ms-client-request-id |
A kérések és a megfelelő válaszok hibaelhárítására használható. Ennek a fejlécnek az értéke megegyezik a x-ms-client-request-id fejléc értékével, ha az szerepel a kérelemben. Az érték legfeljebb 1024 látható ASCII-karakter lehet. Ha a x-ms-client-request-id fejléc nem szerepel a kérelemben, akkor az nem jelenik meg a válaszban. |
Választörzs
Nincsenek.
Engedélyezés
A fióktulajdonos végrehajthatja ezt a műveletet. Emellett bárki, aki rendelkezik a művelet végrehajtásához engedéllyel rendelkező közös hozzáférésű jogosultságkóddal, megteheti.
Mintakérés és válasz
Az alábbi példák JSON- és Atom-hírcsatornákat használó mintakéréseket mutatnak be.
Megjegyzés
A JSON az ajánlott hasznos adatformátum, és ez az egyetlen támogatott formátum a 2015-12-11-es és újabb verziókban.
JSON (2013-08-15-es és újabb verziók)
Az alábbiakban egy JSON-t használó mintakérés és válasz látható.
MERGE https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')
A kérés a következő fejlécekkel lesz elküldve:
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
A kérés a következő JSON-törzstel lesz elküldve:
{
"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"
}
A kérés elküldése után a rendszer a következő választ adja vissza:
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
Atom-hírcsatorna (2015-12-11 előtti verziók)
Az alábbiakban egy Atomot használó mintakérés és válasz látható:
MERGE https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')
A kérés a következő fejlécekkel lesz elküldve:
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
A kérés a következő XML-törzstel lesz elküldve:
<?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>
A kérés elküldése után a rendszer a következő választ adja vissza:
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
Megjegyzések
A Insert Or Merge Entity
művelet az igét MERGE
használja. A műveletet a 2011-08-18-es vagy újabb verzióval kell meghívnia. Emellett ez a művelet nem használja a fejlécet If-Match
. Ezek az attribútumok megkülönböztetik ezt a műveletet a Update Entity
művelettől, bár a kérelemtörzs mindkét művelet esetében ugyanaz.
Ha a Insert Or Merge Entity
műveletet egy entitás egyesítésére használja, az előző entitás minden tulajdonsága megmarad, ha a kérés nem definiálja vagy tartalmazza őket. Az értékekkel rendelkező null
tulajdonságok is megmaradnak.
A művelet meghívásakor Insert or Merge Entity
meg kell adnia a és RowKey
a PartitionKey
rendszertulajdonságok értékeit. Ezek a tulajdonságok együttesen alkotják az elsődleges kulcsot, és egyedinek kell lenniük a táblában.
A és RowKey
az PartitionKey
értéknek sztringértéknek kell lennie.
PartitionKey
és RowKey
az értékek legfeljebb 1024 karakter hosszúságúak lehetnek. Ha egész számot használ a kulcsértékhez, az egész számot egy rögzített szélességű sztringgé kell alakítania. Ennek az az oka, hogy azok canonically rendezve. Alakítsa át például az értéket 1
úgy, hogy 0000001
biztosítsa a megfelelő rendezést.
Egy tulajdonság explicit beírásához adja meg a megfelelő OData
típust az m:type
Atom-hírcsatorna tulajdonságdefiníciójában található attribútum beállításával. További információ a tulajdonságok beírásáról: Entitások beszúrása és frissítése.
Bármely alkalmazás, amely engedélyezheti és elküldheti a kérést HTTP MERGE
, beszúrhat vagy frissíthet egy entitást.
További információ a kötegelt upsert műveletek végrehajtásáról: Entitáscsoport-tranzakciók végrehajtása.
Lásd még
Kérések engedélyezése az Azure Storage-nak
Az OData-adatszolgáltatás verziófejléceinek beállítása
Entitások beszúrása és frissítése
Állapot- és hibakódok
Table Storage-hibakódok