Deli z drugimi prek


Posodabljanje in brisanje vrstic tabele s spletnim API-jem

Postopki za spreminjanje podatkov so osrednji del spletnega API-ja. Poleg preprostih operacij posodabljanja in brisanja lahko izvajate operacije na stolpcih ene tabele (atributi entitete) in sestavite zahteve za posodabljanje ali vstavljanje podatkov, odvisno od tega, ali obstajajo.

Osnovna posodobitev

Postopki posodabljanja uporabljajo glagol HTTP PATCH . Posredujte predmet JSON, ki vsebuje lastnosti, ki jih želite posodobiti, v URI, ki predstavlja zapis. Če je posodobitev uspešna, se vrne odgovor s stanjem »« 204 No Content .

Glava If-Match: * zagotavlja, da ne ustvarite novega zapisa tako, da pomotoma izvedete operacijo upsert. Več informacij: Preprečevanje ustvarjanja v storitvi upsert.

Pomembno

Ko posodabljate entiteto, vključite samo lastnosti, ki jih spreminjate v telo zahteve. Če preprosto posodobite lastnosti entitete, ki ste jo prej pridobili, in vključite ta JSON v zahtevo, boste posodobili vsako lastnost, čeprav je vrednost enaka. To lahko povzroči sistemske dogodke, ki lahko sprožijo poslovno logiko, ki pričakuje, da so se vrednosti spremenile. To lahko povzroči, da se lastnosti zdijo, da so bile posodobljene v nadzornih podatkih, čeprav se v resnici niso spremenile.

Ko posodobite lastnost statecode , je pomembno, da vedno nastavite želeno statuscode. statecode in statuscode imajo odvisne vrednosti. Za dano statecode vrednost je lahko več veljavnih statuscode vrednosti, vendar ima vsak statecode stolpec konfigurirano eno vrednost »DefaultStatus«. Ko posodobite statecode , ne da bi določili , statuscodebo sistem nastavil privzeto vrednost stanja. Ko je nadzor omogočen v tabeli in stolpcu statuscode , spremenjena vrednost stolpca statuscode ne bo zajeta v nadzornih podatkih, razen če je določena v operaciji posodobitve.

opomba,

Definicija atributov vključuje lastnost RequiredLevel . Če je ta možnost nastavljena na SystemRequired, teh atributov ne morete nastaviti na ničelno vrednost. Več informacij: Raven zahteve za atribute

Ta primer posodobi obstoječi zapis računa z accountid vrednostjo 000000000-0000-0000-0000-000000000001.

Prositi:

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  
}  

Odziv:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

opomba,

Glejte Uporaba lastnosti krmarjenja z eno vrednostjo za informacije o povezovanju in prekinitvi povezave entitet ob posodobitvi.

Posodabljanje z vrnjenimi podatki

Če želite pridobiti podatke iz entitete, ki jo posodabljate, lahko PATCH zahtevo sestavite tako, da se podatki iz ustvarjenega zapisa vrnejo s stanjem 200 (V redu). Če želite dobiti ta rezultat, morate uporabiti glavo Prefer: return=representation zahteve.

Če želite nadzorovati, katere lastnosti se vrnejo, dodajte možnost poizvedbe $select URL-ju nabora entitet. Možnost $expand poizvedbe je prezrta, če je uporabljena.

Ta primer posodobi entiteto računa in vrne zahtevane podatke v odgovoru.

Prositi:

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"}  

Odziv:

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"  
}  
  

Posodabljanje več zapisov v eni zahtevi

Najhitrejši način za posodobitev več zapisov iste vrste v eni zahtevi je uporaba dejanja »UpdateMultiple«. V času pisanja tega članka je bilo dejanje UpdateMulti. Vse standardne tabele ne podpirajo tega dejanja, vendar vse elastične tabele podpirajo.

Več informacij:

Posodobitev ene vrednosti lastnosti

Če želite posodobiti samo eno vrednost lastnosti, uporabite PUT zahtevo z imenom lastnosti, ki je dodano URI entitete.

Naslednji primer posodobi name lastnost obstoječe account vrstice z vrednostjo accountid 000000000-0000-0000-0000-000000000001.

Prositi:

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"}  

Odziv:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Brisanje ene vrednosti lastnosti

Če želite izbrisati vrednost posamezne lastnosti, uporabite DELETE zahtevo z imenom lastnosti, ki je dodano uriju entitete.

V tem primeru izbrišete vrednost description lastnosti entitete računa z vrednostjo accountid 000000000-0000-0000-0000-00000000001.

Prositi:

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  

Odziv:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

opomba,

Tega ni mogoče uporabiti z lastnostjo krmarjenja z eno vrednostjo za prekinitev povezave dveh entitet. Za alternativni pristop glejte Prekinitev povezave z lastnostjo krmarjenja z eno vrednostjo .

Dvig vrstice tabele

Operacija upsert je podobna posodobitvi. Uporablja PATCH zahtevo in uporablja URI za sklicevanje na določen zapis. Razlika je v tem, da če zapis ne obstaja, je ustvarjen. Če že obstaja, je posodobljen.

Upsert je dragocen pri sinhronizaciji podatkov med zunanjimi sistemi. Zunanji sistem morda ne vsebuje sklicevanja na primarni ključ tabele Common Data Service, zato lahko nadomestne ključe za tabelo Common Data Service konfigurirate z vrednostmi iz zunanjega sistema, ki enolično identificirajo zapis v obeh sistemih. Več informacij: Določanje nadomestnih ključev za referenčne vrstice

Vse nadomestne ključe, ki so določeni za tabelo, si lahko ogledate v opombah za vrsto entitete v servisnem dokumentu $metadata. Več informacij: Nadomestni ključi.

V tem primeru je tabela z imenom sample_thing , ki ima nadomestni ključ, ki se sklicuje na dva stolpca: sample_key1 in sample_key2, ki sta oba definirana za shranjevanje celoštevilskih vrednosti.

Prositi:

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"
}

Za obe operaciji ustvarjanja ali posodabljanja dobite enak odgovor. Bodite pozorni na to, da glava OData-EntityId odgovora uporablja vrednosti ključa in ne identifikator primarnega ključa GUID za zapis.

Odziv:

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)

Ker je odziv enak, ne morete vedeti, ali je operacija predstavljala operacijo Create ali Update .

Če morate vedeti, lahko uporabite glavo Prefer: return=representation zahteve. S to glavo 201 Created dobite odgovor, ko je zapis ustvarjen, in odgovor, 200 OK ko je zapis posodobljen. Ta možnost doda operacijo Retrieve , ki vpliva na uspešnost. Če uporabljate glavo Prefer: return=representation zahteve, se prepričajte, da vključuje $select minimalno količino podatkov, po možnosti le stolpec primarnega ključa. Več informacij: Posodobitev z vrnjenimi podatki in Ustvari z vrnjenimi podatki.

Ko uporabljate nadomestne ključe, ne smete vključiti nadomestnih vrednosti ključa v telo zahteve.

  • Ko upsert predstavlja Update, se te nadomestne vrednosti ključa prezrejo. Nadomestnih vrednosti ključa ne morete posodobiti, medtem ko jih uporabljate za prepoznavanje zapisa.
  • Ko upsert predstavlja Create, so ključne vrednosti v URL-ju nastavljene za zapis, če niso prisotne v telesu. Zato jih ni treba vključiti v telo zahteve.

Več informacij: Uporaba orodja Upsert za ustvarjanje ali posodabljanje zapisa

opomba,

Običajno pri ustvarjanju novega zapisa dovolite, da sistem dodeli vrednost GUID za primarni ključ. To je najboljša praksa, ker sistem ustvari ključe, ki so optimizirani za indeks, kar izboljša učinkovitost delovanja. Če pa morate ustvariti zapis z določeno vrednostjo primarnega ključa, na primer, ko vrednost GUID ključa ustvari zunanji sistem, upsert postopek ponuja način za to.

Preprečite ustvarjanje ali posodabljanje z upsertom

Včasih obstajajo situacije, ko želite izvesti upsert, vendar želite preprečiti eno od morebitnih operacij: ustvariti ali posodobiti. To lahko storite z If-Match glavami or If-None-Match . Če želite več informacij, glejte Omejevanje operacij upsert.

Osnovno brisanje

Postopek brisanja je preprost. Uporabite DELETE glagol z URI-jem entitete, ki jo želite izbrisati. V tem primeru sporočila izbrišete entiteto kupca z vrednostjo primarnega ključa accountid , ki je enaka 000000000-0000-0000-000000000001.

Prositi:

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  

Odziv:

Če entiteta obstaja, prejmete običajen odgovor s stanjem 204, ki označuje, da je bil izbris uspešen. Če entitete ne najdete, prejmete odgovor s stanjem 404.

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Preverjanje podvojenih zapisov

Če želite več informacij o preverjanju podvojenih zapisov med posodabljanjem, glejte Zaznavanje dvojnikov med posodabljanjem s spletnim API-jem.

Brisanje več zapisov v eni zahtevi

Najhitrejši način za brisanje več zapisov iste vrste v eni zahtevi je uporaba dejanja DeleteMultiple . V času pisanja tega članka DeleteMultiple je akcija predogled. Standardne tabele ne podpirajo tega dejanja, vendar vse elastične tabele podpirajo.

opomba,

Za standardne tabele priporočamo uporabo dejanja BulkDelete, ki omogoča asinhrono brisanje zapisov, ki se ujemajo s poizvedbo. Več informacij: Brisanje podatkov v velikem obsegu

Več informacij:

Posodabljanje in brisanje dokumentov na particijah za shranjevanje

Če posodabljate ali brišete podatke elastične tabele, shranjene v particijah, pri dostopu do teh podatkov določite ključ particije.

Več informacij: Izbiranje vrednosti PartitionId

Glej tudi

Vzorec osnovnih operacij spletnega API-ja (C#)
Vzorec osnovnih operacij spletnega API-ja (JavaScript na strani odjemalca)
Izvajanje operacij s spletnim API-jem
Sestavljanje zahtev HTTP in obravnavanje napak
Poizvedovanje podatkov s spletnim API-jem
Ustvarjanje vrstice tabele s spletnim API-jem
Pridobivanje vrstice tabele s spletnim API-jem
Povezovanje in prekinitev povezave vrstic tabele s spletnim API-jem
Uporaba funkcij spletnega API-ja
Uporaba dejanj spletnega API-ja
Izvajanje paketnih operacij s spletnim API-jem
Lažno predstavljanje drugega uporabnika s spletnim API-jem
Izvajanje pogojnih operacij s spletnim API-jem