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ével

  • mytable a tábla nevével

  • myPartitionKey és myRowKey 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. Minden kulcsérték legfeljebb 64 KiB méretű lehet. 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