Dalīties caur


Tabulas rindu atjaunināšana un dzēšana, izmantojot tīmekļa API

Datu modificēšanas operācijas ir Web API pamatdaļa. Papildus vienkāršām atjaunināšanas un dzēšanas operācijām var veikt darbības ar atsevišķām tabulas kolonnām (entītijas atribūtiem) un izveidot upsert pieprasījumus, kas atjauninās vai ievietos datus atkarībā no tā, vai tie pastāv.

Pamata atjauninājums

Atjaunināšanas operācijās tiek izmantots HTTP PATCH darbības vārds. Nododiet JSON objektu, kas satur rekvizītus, kurus vēlaties atjaunināt, uz URI, kas attēlo ierakstu. Ja atjauninājums ir veiksmīgs, tiek atgriezta atbilde ar statusu.204 No Content

Galvene If-Match: * nodrošina, ka netiek izveidots jauns ieraksts, nejauši veicot upsert operāciju. Papildinformācija: Novērst izveidi upsert.

Svarīgi

Atjauninot entītiju, pieprasījuma pamattekstā iekļaujiet tikai tos rekvizītus, kurus maināt. Vienkārši atjauninot iepriekš izgūtās entītijas rekvizītus un iekļaujot šo JSON pieprasījumā, katrs rekvizīts tiks atjaunināts, pat ja vērtība ir vienāda. Tas var izraisīt sistēmas notikumus, kas var aktivizēt biznesa loģiku, kas paredz, ka vērtības ir mainījušās. Tas var izraisīt rekvizītu atjaunināšanu auditēšanas datos, lai gan faktiski tie nav mainījušies.

Atjauninot statecode īpašumu, ir svarīgi vienmēr iestatīt vēlamo statuscode. statecode un tām ir statuscode atkarīgas vērtības. Konkrētai statecode vērtībai var būt vairākas derīgas statuscode vērtības, bet katrai statecode kolonnai ir konfigurēta viena vērtība DefaultStatus. Atjauninot statecode , nenorādot , noklusējuma statusa statuscodevērtību iestatīs sistēma. Turklāt, ja tabulā un kolonnā ir iespējota statuscode auditēšana, mainītā kolonnas statuscode vērtība netiks tverta audita datos, ja vien tā nav norādīta atjaunināšanas operācijā.

Piezīmes

Atribūtu definīcija ietver rekvizītu RequiredLevel . Ja tas ir iestatīts uz SystemRequired, šiem atribūtiem nevar iestatīt vērtību Null. Papildinformācija: Atribūta prasības līmenis

Šajā piemērā tiek atjaunināts esošs konta ieraksts ar accountid vērtību 000000000-0000-0000-00000000001.

Lūgums:

PATCH [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1  
Content-Type: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0
If-Match: *  
  
{  
    "name": "Updated Sample Account ",  
    "creditonhold": true,  
    "address1_latitude": 47.639583,  
    "description": "This is the updated description of the sample account",  
    "revenue": 6000000,  
    "accountcategorycode": 2  
}  

Atbildi:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Piezīmes

Informāciju par entītiju saistīšanu un atsaistīšanu atjaunināšanas laikā skatiet sadaļā Vienas vērtības navigācijas rekvizītu izmantošana .

Atjaunināšana ar atgrieztiem datiem

Lai izgūtu datus no atjaunināmās entītijas, varat izveidot PATCH pieprasījumu tā, lai izveidotā ieraksta dati tiktu atgriezti ar statusu 200 (Labi). Lai iegūtu šo rezultātu, jāizmanto Prefer: return=representation pieprasījuma galvene.

Lai kontrolētu, kuri rekvizīti tiek atgriezti, pievienojiet vaicājuma $select opciju entītiju kopas URL. Vaicājuma $expand opcija tiek ignorēta, ja tā tiek izmantota.

Šajā piemērā tiek atjaunināta konta entītija un atbildē tiek atgriezti pieprasītie dati.

Lūgums:

PATCH [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)?$select=name,creditonhold,address1_latitude,description,revenue,accountcategorycode,createdon HTTP/1.1  
OData-MaxVersion: 4.0  
OData-Version: 4.0  
Accept: application/json  
Content-Type: application/json; charset=utf-8  
Prefer: return=representation
If-Match: * 
  
{"name":"Updated Sample Account"}  

Atbildi:

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal  
Preference-Applied: return=representation  
OData-Version: 4.0  
  
{  
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",  
    "@odata.etag": "W/\"536537\"",  
    "accountid": "00000000-0000-0000-0000-000000000001",  
    "accountcategorycode": 1,  
    "description": "This is the description of the sample account",  
    "address1_latitude": 47.63958,  
    "creditonhold": false,  
    "name": "Updated Sample Account",  
    "createdon": "2016-09-28T23:14:00Z",  
    "revenue": 5000000.0000,  
    "_transactioncurrencyid_value": "048dddaa-6f7f-e611-80d3-00155db5e0b6"  
}  
  

Vairāku ierakstu atjaunināšana vienā pieprasījumā

Ātrākais veids, kā atjaunināt vairākus viena tipa ierakstus vienā pieprasījumā, ir izmantot darbību UpdateMultiple. Šī rakstīšanas laikā darbība UpdateMultiple. Ne visas standarta tabulas atbalsta šo darbību, bet visas elastīgās tabulas to atbalsta.

Papildu informācija:

Vienas rekvizīta vērtības atjaunināšana

Ja vēlaties atjaunināt tikai vienu rekvizīta vērtību, izmantojiet PUT pieprasījumu ar rekvizīta nosaukumu, kas pievienots entītijas URI.

Tālāk sniegtajā piemērā tiek atjaunināts esošas account rindas name rekvizīts ar accountid vērtību 000000000-0000-0000-000000000001.

Lūgums:

PUT [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/name HTTP/1.1  
Content-Type: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  
  
{"value": "Updated Sample Account Name"}  

Atbildi:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Vienas rekvizīta vērtības dzēšana

Lai izdzēstu viena rekvizīta DELETE vērtību, izmantojiet pieprasījumu ar rekvizīta nosaukumu, kas pievienots entītijas URI.

Tālāk sniegtajā piemērā tiek dzēsta konta entītijas rekvizīta description vērtība ar accountid vērtību 00000000-0000-0000-00000000000000001.

Lūgums:

DELETE [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/description HTTP/1.1  
Content-Type: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Atbildi:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Piezīmes

To nevar izmantot ar vienas vērtības navigācijas rekvizītu, lai atsaistītu divas entītijas. Alternatīvu pieeju skatiet sadaļā Saistīšana ar vienas vērtības navigācijas rekvizītu .

Tabulas rindas augšupcelšana

Upsert operācija ir līdzīga atjauninājumam. Tas izmanto PATCH pieprasījumu un izmanto URI, lai atsauktos uz konkrētu ierakstu. Atšķirība ir tāda, ka, ja ieraksts nepastāv, tas tiek izveidots. Ja tas jau pastāv, tas tiek atjaunināts.

Upsert ir vērtīgs, sinhronizējot datus starp ārējām sistēmām. Ārējā sistēma var nesaturēt atsauci uz Dataverse tabulas primāro atslēgu, tāpēc varat konfigurēt alternatīvās atslēgas Dataverse tabulai, izmantojot vērtības no ārējās sistēmas, kas unikāli identificē ierakstu abās sistēmās. Papildinformācija Alternatīvo atslēgu definēšana atsauces rindām

Visas tabulai definētās alternatīvās atslēgas var redzēt entītijas tipa anotācijās $metadata pakalpojuma dokumentā. Papildinformācija: Alternatīvās atslēgas.

Šajā piemērā ir tabula ar nosaukumu sample_thing , kurai ir alternatīvā atslēga, kas attiecas uz divām kolonnām: sample_key1 un , kuras abas sample_key2ir definētas, lai saglabātu veselas vērtības.

Lūgums:

PATCH [Organization URI]/api/data/v9.2/sample_things(sample_key1=1,sample_key2=1) HTTP/1.1
Accept: application/json 
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Content-Type: application/json

{
    "sample_name": "1:1"
}

Abām izveides vai atjaunināšanas operācijām tiek saņemta viena un tā pati atbilde. Ievērojiet, OData-EntityId kā atbildes galvene izmanto atslēgas vērtības, nevis ieraksta GUID primārās atslēgas identifikatoru.

Atbildi:

HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/sample_things(sample_key1=1,sample_key2=1)

Tā kā atbilde ir vienāda, jūs nevarat zināt, vai operācija ir vai CreateUpdate operācija.

Ja jums ir jāzina, varat izmantot Prefer: return=representation pieprasījuma galveni. Izmantojot šo galveni, jūs saņemat 201 Created atbildi, kad ieraksts tiek izveidots, un atbildi 200 OK , kad ieraksts tiek atjaunināts. Šī opcija pievieno Retrieve operāciju, kas ietekmē veiktspēju. Ja izmantojat Prefer: return=representation pieprasījuma galveni, pārliecinieties, vai ir $select iekļauts minimālais datu apjoms, vēlams tikai primārās atslēgas kolonna. Papildinformācija: Atjaunināšana ar atgrieztajiem datiem un Izveide ar atgrieztajiem datiem.

Izmantojot alternatīvās atslēgas, alternatīvās atslēgas vērtības nedrīkst iekļaut pieprasījuma pamattekstā.

  • Ja upsert apzīmē Update, šīs alternatīvās atslēgas vērtības tiek ignorētas. Alternatīvās atslēgas vērtības nevar atjaunināt, kamēr tās tiek izmantotas ieraksta identificēšanai.
  • Ja upsert apzīmē Create, URL atslēgas vērtības tiek iestatītas ierakstam, ja tās nav pamattekstā. Tāpēc nav nepieciešams tos iekļaut pieprasījuma pamattekstā.

Papildinformācija Upsert izmantošana ieraksta izveidei vai atjaunināšanai

Piezīmes

Parasti, veidojot jaunu ierakstu, jūs ļaujat sistēmai piešķirt GUID vērtību primārajai atslēgai. Tā ir labākā prakse, jo sistēma ģenerē indeksam optimizētas atslēgas, un tas uzlabo veiktspēju. Taču, ja nepieciešams izveidot ierakstu ar noteiktu primārās atslēgas vērtību, piemēram, ja atslēgas GUID vērtību ģenerē ārēja sistēma, operācija upsert nodrošina veidu, kā to izdarīt.

Nepieļaut izveidi vai atjaunināšanu, izmantojot upsert

Dažreiz ir situācijas, kad vēlaties veikt upsert, bet vēlaties novērst kādu no iespējamām darbībām: izveidot vai atjaunināt. To var izdarīt, If-Match izmantojot galvenes vai If-None-Match . Papildinformāciju skatiet sadaļā Upsert operāciju ierobežošana.

Pamata dzēšana

Dzēšanas operācija ir vienkārša. Izmantojiet DELETE darbības vārdu ar dzēšamās entītijas URI. Šajā ziņojuma piemērā tiek izdzēsta konta entītija, kuras primārās atslēgas accountid vērtība ir vienāda ar 00000000-0000-0000000000001.

Lūgums:

DELETE [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1  
Content-Type: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Atbildi:

Ja entītija pastāv, jūs saņemat parastu atbildi ar statusu 204, lai norādītu, ka dzēšana bija veiksmīga. Ja entītija netiek atrasta, tiek saņemta atbilde ar statusu 404.

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Pārbaudiet, vai nav ierakstu dublikātu

Papildinformāciju par to, kā pārbaudīt ierakstu dublikātus atjaunināšanas operācijas laikā, skatiet sadaļā Dublikātu noteikšana atjaunināšanas operācijas laikā, izmantojot Web API.

Vairāku ierakstu dzēšana vienā pieprasījumā

Ātrākais veids, kā vienā pieprasījumā izdzēst vairākus viena tipa ierakstus, ir izmantot DeleteMultiple šo darbību. Šī rakstīšanas DeleteMultiple laikā darbība ir priekšskatījuma funkcija. Standarta tabulas neatbalsta šo darbību, bet visas elastīgās tabulas to atbalsta.

Piezīmes

Standarta tabulām ieteicams izmantot darbību BulkDelete, kas iespējo vaicājumam atbilstošu ierakstu asinhronu dzēšanu. Papildinformācija Datu lielapjoma dzēšana

Papildu informācija:

Dokumentu atjaunināšana un dzēšana krātuves nodalījumos

Ja atjaunināt vai dzēst elastīgās tabulas datus, kas tiek glabāti nodalījumos, noteikti norādiet nodalījuma atslēgu, piekļūstot šiem datiem.

Papildinformācija PartitionId vērtības izvēle

Skatīt arī

Tīmekļa API pamatoperāciju paraugs (C#)
Tīmekļa API pamatoperāciju paraugs (klienta puses JavaScript)
Darbību veikšana, izmantojot tīmekļa API
Http pieprasījumu sastādīšana un kļūdu apstrāde
Datu vaicājums, izmantojot tīmekļa API
Tabulas rindas izveide, izmantojot tīmekļa API
Tabulas rindas izgūšana, izmantojot tīmekļa API
Tabulas rindu saistīšana un atsaistīšana, izmantojot Web API
Tīmekļa API funkciju izmantošana
Tīmekļa API darbību izmantošana
Pakešu operāciju izpilde, izmantojot tīmekļa API
Uzdošanās par citu lietotāju, izmantojot tīmekļa API
Nosacītu operāciju veikšana, izmantojot tīmekļa API