opomba,
Dostop do te strani zahteva pooblastilo. Poskusite se vpisati alispremeniti imenike.
Dostop do te strani zahteva pooblastilo. Poskusite lahko spremeniti imenike.
Operacije, ki spreminjajo podatke, so osrednji del spletnega API-ja. Poleg preprostih operacij posodabljanja in brisanja lahko izvajate operacije na posameznih stolpcih tabele (atributi entitet) in sestavljate upsert zahteve, ki posodabljajo ali vstavljajo podatke, 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, odgovor vrne status .204 No Content
Glava If-Match: * zagotavlja, da ne ustvarite novega zapisa tako, da pomotoma izvedete operacijo upsert. Za več informacij glejte Preprečite ustvarjanje v Upsert.
Pomembno
Ko posodabljate entiteto, vključite samo lastnosti, ki jih spreminjate v telo zahteve. Če entiteto posodobite tako, da vključite vse lastnosti entitete, ki ste jo prej pridobili, operacija posodobi vsako lastnost, tudi če je vrednost enaka. Ta posodobitev lahko povzroči sistemske dogodke, ki sprožijo poslovno logiko, ki pričakuje, da so se vrednosti spremenile. Lahko povzroči, da se lastnosti v podatkih revizije zdijo posodobljene, čeprav se v resnici niso spremenile.
Ko posodabljate lastnost, statecode vedno nastavite želeno statuscodevrednost . Vrednosti statecode in so statuscode medsebojno odvisne. Za dano statecode vrednost je lahko več veljavnih statuscode vrednosti. Vendar ima vsak statecode stolpec nastavljeno eno vrednost DefaultStatus . Ko posodobite statecode brez navedbe , statuscodesistem nastavi privzeto statusno vrednost. Prav tako, če omogočite revizijo na tabeli in stolpcu statuscode , spremenjena vrednost stolpca statuscode ni zajeta v podatkih revizije, razen če jo določite v operaciji posodobitve.
opomba,
Definicija atributov vključuje lastnost RequiredLevel . Ko je ta lastnost nastavljena na SystemRequired, teh atributov ne morete nastaviti na ničelno vrednost. Za več informacij glejte Raven zahtev po atributih.
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,
Za informacije o združevanju in razdruževanju entitet ob posodobitvi glejte Uporaba lastnosti navigacije z eno vrednostjo.
Posodabljanje z vrnjenimi podatki
Za pridobitev podatkov od entitete, ki jo posodabljate, sestavite PATCH zahtevo tako, da vrne podatke iz posodobljenega zapisa s statusom 200 (OK). Za ta rezultat uporabite Prefer: return=representation header request.
Za nadzor, katere lastnosti se vrnejo, $select dodajte možnost poizvedbe na URL za nabor 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«. Vse standardne tabele ne podpirajo tega dejanja, vendar vse elastične tabele podpirajo.
Več informacij:
- Sporočila o množičnih operacijah
- Vzorec: Spletni API Uporaba množičnih operacij
- Uporaba funkcije UpdateMultiple z elastičnimi tabelami
Posodobitev ene vrednosti lastnosti
Za posodobitev vrednosti posamezne lastnosti uporabite PUT zahtevo in dodajte ime lastnosti v uri entitete.
Naslednji primer posodobi name lastnost obstoječe account vrstice z vrednostjo accountid00000000-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
Za izbris vrednosti posamezne lastnosti uporabite zahtevo DELETE , pri kateri je ime lastnosti dodano URI entiteti.
Naslednji primer izbriše vrednost description lastnosti entitete računa z vrednostjo accountid00000000-0000-0000-0000-000000000001.
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 pristopa z enovrednostno navigacijsko lastnostjo ne morete uporabiti za ločevanje dveh entitet. Za alternativni pristop glejte Disassociate z uporabo navigacijske lastnosti 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 reference na primarni ključ tabele Dataverse, zato lahko nastavite alternativne ključe za tabelo Dataverse z uporabo vrednosti iz zunanjega sistema, ki edinstveno identificirajo zapis na 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 operacije 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. Z uporabo te glave dobite odgovor, 201 Created 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.
Pri uporabi alternativnih ključev ne vključujte alternativnih vrednosti ključev 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 sistem dodeli GUID vrednost za primarni ključ. Ta praksa je najboljša, ker sistem generira ključe, optimizirane za indeks, in ta izbira izboljša zmogljivost. Č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 želite izvesti nekaj upsert , a preprečiti eno od možnih operacij: bodisi ustvariti ali posodobiti. Te operacije lahko preprečite z uporabo glave or If-MatchIf-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. To sporočilo izbriše entiteto računa z primarno vrednostjo ključaaccountid, ki je enaka .00000000-0000-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
Za izbris več zapisov iste vrste v eni zahtevi uporabite dejanje DeleteMultiple . Standardne tabele DeleteMultiple tega delovanja ne podpirajo, vendar vse elastične mize to omogočajo.
opomba,
Za standardne tabele uporabite dejanje BulkDelete. Ta ukrep omogoča asinhrono brisanje zapisov, ki ustrezajo poizvedbi. Za več informacij glejte Brisanje podatkov v množici.
Več informacij:
- Sporočila o množičnih operacijah
- Vzorčna koda elastične mize
- Uporaba funkcije DeleteMultiple z elastičnimi tabelami
Posodabljanje in brisanje dokumentov na particijah za shranjevanje
Če posodabljate ali brišete podatke elastične tabele, shranjene v particijah, določite ključ particije, ko dostopate do teh podatkov.
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