Dijeli putem


Ažurirajte i brišite redove tablica korištenjem Web API-ja

Operacije koje mijenjaju podatke temeljni su dio Web API-ja. Osim jednostavnih operacija ažuriranja i brisanja, možete izvoditi operacije nad pojedinačnim stupcima tablice (atributi entiteta) i sastavljati upsert zahtjeve koji ažuriraju ili umeću podatke ovisno o postojanju podataka.

Osnovno ažuriranje

Operacije ažuriranja koriste HTTP PATCH glagol. Proslijedite JSON objekt koji sadrži svojstva koja želite ažurirati na URI koji predstavlja zapis. Ako je ažuriranje uspješno, odgovor vraća status .204 No Content

Zaglavlje If-Match: * osigurava da ne stvorite novi zapis slučajnim izvođenjem operacije upsert. Za više informacija pogledajte Prevent create in upsert.

Važno

Prilikom ažuriranja entiteta uključite samo svojstva koja mijenjate u tijelo zahtjeva. Ako ažurirate entitet uključivanjem svih svojstava entiteta koje ste prethodno dohvatili, operacija ažurira svako svojstvo čak i ako je vrijednost ista. Ovo ažuriranje može uzrokovati sistemske događaje koji pokreću poslovnu logiku koja očekuje da su vrijednosti promijenjene. To može uzrokovati da svojstva izgledaju ažurirano u podacima revizije, iako se zapravo nisu promijenila.

Kada ažurirate statecode svojstvo, uvijek postavite željeni statuscode. Vrijednosti statecode i statuscode ovise jedna o drugoj. Za zadanu statecode vrijednost može postojati više valjanih statuscode vrijednosti. Međutim, svaki statecode stupac ima konfiguriranu jednu vrijednost DefaultStatus . Kada ažurirate statecode bez specificiranja , statuscodesustav postavlja zadanu statusnu vrijednost. Također, ako omogućite reviziju na tablici i statuscode stupcu, promijenjena vrijednost stupca statuscode se ne prikazuje u podacima revizije osim ako je ne navedete u operaciji ažuriranja.

Napomena

Definicija atributa uključuje svojstvo RequiredLevel . Kada je ovo svojstvo postavljeno na SystemRequired, ne možete postaviti te atribute na nultu vrijednost. Za više informacija pogledajte Razinu zahtjeva atributa.

U ovom se primjeru accountid ažurira postojeći zapis računa s vrijednošću 000000000-0000-0000-0000-00000000001.

Zahtjev:

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  
}  

Odgovor:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Napomena

Za informacije o asocijaciji i razdvajanju entiteta pri ažuriranju, pogledajte Korištenje svojstava navigacije s jednom vrijednošću.

Ažuriranje s vraćenim podacima

Da biste preuzeli podatke od entiteta koji ažurirate, sastavite svoj PATCH zahtjev tako da vraća podatke iz ažuriranog zapisa sa statusom 200 (OK). Za ovaj rezultat koristite zaglavlje Prefer: return=representation zahtjeva.

Za kontrolu koja se svojstva vraćaju, dodajte opciju upita $select na URL za skup entiteta. Mogućnost $expand upita se zanemaruje ako se koristi.

Ovaj primjer ažurira entitet računa i vraća tražene podatke u odgovoru.

Zahtjev:

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

Odgovor:

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

Ažuriranje više zapisa u jednom zahtjevu

Najbrži način ažuriranja više zapisa iste vrste u jednom zahtjevu jest korištenje akcije UpdateMultiple. Ne podržavaju sve standardne tablice ovu akciju, ali sve elastične tablice podržavaju.

Dodatne informacije:

Ažuriranje vrijednosti jednog svojstva

Za ažuriranje vrijednosti jedne nekretnine, koristite PUT zahtjev i dodajte ime svojstva u Uri entiteta.

Sljedeći primjer ažurira svojstvo postojećeg account retka s vrijednošću accountid00000000-0000-0000-0000-000000000001.name

Zahtjev:

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

Odgovor:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Brisanje vrijednosti jednog svojstva

Za brisanje vrijednosti jednog svojstva koristite DELETE zahtjev s imenom svojstva dodanim URI-ju entiteta.

Sljedeći primjer briše vrijednost description svojstva entiteta računa s vrijednošću accountid .00000000-0000-0000-0000-000000000001

Zahtjev:

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  

Odgovor:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Napomena

Ne možete koristiti ovaj pristup s navigacijskim svojstvom s jednom vrijednošću za razdvajanje dvaju entiteta. Za alternativni pristup, vidi Diskonjunkcija korištenjem svojstva navigacije s jednom vrijednošću.

Povećanje retka tablice

Operacija upsert slična je ažuriranju. Koristi PATCH zahtjev i koristi URI za referenciranje određenog zapisa. Razlika je u tome što ako zapis ne postoji, on se stvara. Ako već postoji, ažurira se.

Upsert je vrijedan pri sinkronizaciji podataka između vanjskih sustava. Vanjski sustav možda ne sadrži referencu na primarni ključ Dataverse tablice, pa možete konfigurirati alternativne ključeve za Dataverse tablicu koristeći vrijednosti iz vanjskog sustava koje jedinstveno identificiraju zapis na oba sustava. Dodatne informacije: Definiranje zamjenskih ključeva za referenciranje redaka

Sve zamjenske ključeve koji su definirani za tablicu možete vidjeti u napomenama za vrstu entiteta u dokumentu usluge $metadata. Dodatne informacije: Zamjenski ključevi.

U sljedećem primjeru postoji tablica s nazivom sample_thing koja ima zamjenski ključ koji se odnosi na dva stupca: sample_key1 i sample_key2, koji su definirani za pohranu cjelobrojnih vrijednosti.

Zahtjev:

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 kreiranja ili ažuriranja dobivate isti odgovor. Primijetite kako zaglavlje odgovora OData-EntityId koristi vrijednosti ključa, a ne identifikator primarnog ključa GUID-a za zapis.

Odgovor:

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)

Budući da je odgovor isti, ne možete znati je li operacija predstavljala operaciju Create ili Update .

Ako trebate znati, možete koristiti zaglavlje zahtjeva Prefer: return=representation . Korištenjem ovog zaglavlja dobivate 201 Created odgovor kada se zapis kreira i 200 OK odgovor kada se zapis ažurira. Ova opcija dodaje operaciju Retrieve koja utječe na performanse. Ako koristite zaglavlje Prefer: return=representation zahtjeva, provjerite uključuje li minimalnu $select količinu podataka, po mogućnosti samo stupac primarnog ključa. Dodatne informacije: Ažuriranje s vraćenim podacima i Stvaranje s vraćenim podacima.

Kod korištenja alternativnih ključeva, nemojte uključivati alternativne vrijednosti ključeva u tijelo zahtjeva.

  • Kada upsert predstavlja Update, te se vrijednosti zamjenskog ključa zanemaruju. Ne možete ažurirati vrijednosti zamjenskog ključa dok ih koristite za identifikaciju zapisa.
  • Kada upsert predstavlja Create, ključne vrijednosti u URL-u postavljaju se za zapis ako nisu prisutne u tijelu. Dakle, nema potrebe da ih uključite u tijelo zahtjeva.

Dodatne informacije: Korištenje Upserta za stvaranje ili ažuriranje zapisa

Napomena

Obično, prilikom kreiranja novog zapisa, dopustite sustavu da dodijeli GUID vrijednost za primarni ključ. Ova praksa je najbolja jer sustav generira ključeve optimizirane za indeks, a taj izbor poboljšava performanse. No ako trebate stvoriti zapis s određenom vrijednošću primarnog ključa, primjerice kada je vrijednost GUID-a ključa generirana od strane vanjskog sustava, upsert operacija pruža način da to učinite.

Sprječavanje stvaranja ili ažuriranja pomoću upserta

Ponekad želite napraviti ali upsert spriječiti jednu od mogućih operacija: ili kreirati ili ažurirati. Ove operacije možete spriječiti korištenjem If-MatchIf-None-Match ili zaglavlja. Dodatne informacije potražite u odjeljku Ograničavanje operacija upsert.

Osnovno brisanje

Operacija brisanja je jednostavna. Koristite DELETE glagol s URI-jem entiteta koji želite izbrisati. Ovaj primjer poruke briše entitet računa s primarnom vrijednošću ključa accountid jednakom .00000000-0000-0000-0000-000000000001

Zahtjev:

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  

Odgovor:

Ako entitet postoji, dobit ćete uobičajeni odgovor sa statusom 204 koji označava da je brisanje bilo uspješno. Ako entitet nije pronađen, dobit ćete odgovor sa statusom 404.

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Provjera dupliciranih zapisa

Dodatne informacije o tome kako provjeriti ima li dupliciranih zapisa tijekom operacije ažuriranja potražite u odjeljku Otkrivanje duplikata tijekom operacije ažuriranja pomoću web-API-ja.

Brisanje više zapisa u jednom zahtjevu

Za brisanje više zapisa iste vrste u jednom zahtjevu, koristite ovu akciju DeleteMultiple . Standardni stolovi to ne podržavaju DeleteMultiple , ali svi elastični stolovi podržavaju.

Napomena

Za standardne tablice koristite akciju BulkDelete. Ova radnja omogućuje asinkrono brisanje zapisa koji odgovaraju upitu. Za više informacija, pogledajte Brisanje podataka u većim količinama.

Dodatne informacije:

Ažuriranje i brisanje dokumenata u particijama za pohranu

Ako ažurirate ili brišete podatke elastičnih tablica pohranjene u particijama, navedite ključ particije kada pristupate tim podacima.

Dodatne informacije: Odabir vrijednosti PartitionId

Vidi također

Uzorak osnovnih operacija web-API-ja (C#)
Uzorak osnovnih operacija web-API-ja (JavaScript na strani klijenta)
Izvođenje operacija pomoću web-API-ja
Sastavljanje HTTP zahtjeva i rukovanje pogreškama
Upitanje podataka pomoću web-API-ja
Stvaranje retka tablice pomoću web-API-ja
Dohvaćanje retka tablice pomoću web-API-ja
Pridruživanje i prekid povezivanja redaka tablice pomoću web-API-ja
Korištenje funkcija web-API-ja
Korištenje radnji web-API-ja
Izvršavanje skupnih operacija pomoću web-API-ja
Lažno predstavljanje drugog korisnika pomoću web-API-ja
Izvođenje uvjetnih operacija pomoću web-API-ja