Bendrinti naudojant


Lentelės eilučių naujinimas ir naikinimas naudojant žiniatinklio API

Duomenų modifikavimo operacijos yra pagrindinė žiniatinklio API dalis. Be paprastų naujinimo ir naikinimo operacijų, galite atlikti operacijas su atskiros lentelės stulpeliais (objekto atributais) ir kurti atnaujinimo užklausas, kurios atnaujins arba įterps duomenis, priklausomai nuo to, ar jie yra.

Pagrindinis naujinimas

Atnaujinimo operacijose naudojamas HTTP PATCH veiksmažodis. Perduokite JSON objektą, kuriame yra ypatybės, kurias norite atnaujinti, į įrašą žymintį URI. Jei naujinimas sėkmingas, grąžinamas atsakymas, kurio būsena 204 No Content yra Daug.

Antraštė If-Match: * užtikrina, kad nesukursite naujo įrašo netyčia atlikdami upsert operaciją. Daugiau informacijos: Užkirsti kelią kurti upsert.

Svarbu

Atnaujindami objektą, į užklausos tekstą įtraukite tik tas ypatybes, kurias keičiate. Paprasčiausiai atnaujinus anksčiau nuskaityto objekto ypatybes ir įtraukus tą JSON į užklausą, kiekviena ypatybė bus atnaujinta, net jei reikšmė yra ta pati. Tai gali sukelti sistemos įvykius, kurie gali suaktyvinti verslo logiką, kuri tikisi, kad reikšmės pasikeitė. Dėl to gali atrodyti, kad ypatybės buvo atnaujintos audito duomenyse, nors iš tikrųjų jos iš tikrųjų nepasikeitė.

Atnaujinant statecode nuosavybę, svarbu visada nustatyti norimą statuscode. statecode ir statuscode turi priklausomas reikšmes. Tam tikrai statecode reikšmei gali būti kelios leistinos statuscode reikšmės, tačiau kiekviename statecode stulpelyje sukonfigūruota viena DefaultStatus reikšmė. Kai atnaujinate statecode nenurodydami statuscode, numatytąją būsenos reikšmę nustatys sistema. Be to, kai lentelėje ir statuscode stulpelyje įgalintas tikrinimas, pakeista stulpelio reikšmė statuscode nebus užfiksuota audito duomenyse, nebent ji bus nurodyta naujinimo operacijoje.

Pastaba.

Atributų apibrėžimas apima RequiredLevel ypatybę. Kai nustatyta kaip SystemRequired, negalite nustatyti šių atributų nulinės reikšmės. Daugiau informacijos: Atributo reikalavimo lygis

Šiame pavyzdyje atnaujinamas esamas kliento įrašas, kurio accountid vertė yra 000000000-0000-00000000001.

Prašymą:

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  
}  

Atsakas:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Pastaba.

Informacijos apie objektų susiejimą ir atsiejimą naujinant ieškokite Vienos reikšmės naršymo ypatybių naudojimas .

Atnaujinti su grąžintais duomenimis

Norėdami gauti duomenis iš naujinamo objekto, galite sukurti užklausą PATCH taip, kad sukurto įrašo duomenys būtų grąžinti su būsena 200 (Gerai). Norėdami gauti šį rezultatą, turite naudoti užklausos Prefer: return=representation antraštę.

Norėdami valdyti, kurios ypatybės grąžinamos, pridėkite užklausos $select parinktį prie objektų rinkinio URL. Jei naudojama, $expand užklausos parinkties nepaisoma.

Šiame pavyzdyje atnaujinamas kliento objektas ir atsakyme pateikiami prašomi duomenys.

Prašymą:

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

Atsakas:

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

Kelių įrašų naujinimas vienoje užklausoje

Greičiausias būdas atnaujinti kelis to paties tipo įrašus vienoje užklausoje yra naudoti veiksmą UpdateMultiple. Šio rašymo metu veiksmas UpdateMultiple. Ne visos standartinės lentelės palaiko šį veiksmą, bet visos elastingos lentelės.

Daugiau informacijos:

Vienos ypatybės reikšmės naujinimas

Jei norite atnaujinti tik vieną ypatybės reikšmę, naudokite užklausą PUT su ypatybės pavadinimu, pridėtu prie objekto URI.

Toliau pateiktame pavyzdyje atnaujinama name esamos account eilutės ypatybė, kurios accountid vertė yra 00000000-0000-0000-000000000001.

Prašymą:

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

Atsakas:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Vienos ypatybės reikšmės naikinimas

Norėdami panaikinti vienos ypatybės reikšmę, naudokite užklausą DELETE su ypatybės pavadinimu, pridėtu prie objekto URI.

Toliau pateiktame pavyzdyje panaikinama sąskaitos objekto ypatybės, kurios accountid vertė yra 00000000-0000-0000-00000000000001, reikšmėdescription.

Prašymą:

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  

Atsakas:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Pastaba.

To negalima naudoti su vienos reikšmės naršymo ypatybe, norint atsieti du objektus. Alternatyvų metodą rasite Atsieti nuo vienos reikšmės naršymo ypatybės .

Lentelės eilutės atnaujinimas

Upsert operacija yra panaši į naujinimą. Jis naudoja užklausą PATCH ir naudoja URI konkrečiam įrašui nurodyti. Skirtumas tas, kad jei įrašo nėra, jis sukuriamas. Jei jis jau yra, jis atnaujinamas.

"Upsert" yra vertingas sinchronizuojant duomenis tarp išorinių sistemų. Išorinėje sistemoje gali nebūti nuorodos į pirminį "Dataverse" lentelės raktą, todėl galite konfigūruoti alternatyvius "Dataverse" lentelės raktus naudodami išorinės sistemos reikšmes, kurios unikaliai identifikuoja įrašą abiejose sistemose. Daugiau informacijos: Alternatyvių raktų apibrėžimas eilutėms nurodyti

Visus alternatyvius lentelės raktus galite matyti objekto tipo komentaruose $metadata tarnybos dokumente. Daugiau informacijos: Alternatyvūs klavišai.

Toliau pateiktame pavyzdyje yra lentelė pavadinimu sample_thing , turinti alternatyvų raktą, nurodantį du stulpelius: sample_key1 ir sample_key2, kurie abu apibrėžti sveikųjų skaičių reikšmėms saugoti.

Prašymą:

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

Abiejų kūrimo arba naujinimo operacijų atveju gausite tą patį atsakymą. Atkreipkite dėmesį, kaip atsakymo OData-EntityId antraštė naudoja rakto reikšmes, o ne įrašo GUID pirminio rakto identifikatorių.

Atsakas:

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)

Kadangi atsakymas yra tas pats, negalite žinoti, ar operacija buvo operacija Create arba Update operacija.

Jei reikia žinoti, galite naudoti užklausos Prefer: return=representation antraštę. Naudodami šią antraštę gausite 201 Created atsakymą, kai sukuriamas įrašas, ir 200 OK atsakymą, kai įrašas atnaujinamas. Ši parinktis prideda Retrieve operaciją, kuri turi įtakos našumui. Jei naudojate užklausos Prefer: return=representation antraštę, įsitikinkite, kad įtraukiate $select minimalų duomenų kiekį, pageidautina tik pirminio rakto stulpelį. Daugiau informacijos: Naujinimas su grąžintais duomenimis ir Kūrimas su grąžintais duomenimis.

Kai naudojate alternatyvius raktus, neturėtumėte įtraukti alternatyvių raktų reikšmių į užklausos tekstą.

  • Kai upsert reiškia , šių alternatyvių raktų Updatereikšmių nepaisoma. Negalite atnaujinti alternatyvių raktų reikšmių, kai jas naudojate įrašui identifikuoti.
  • Kai upsert reiškia Create, URL pagrindinės reikšmės nustatomos įrašui, jei jų nėra tekste. Taigi nereikia jų įtraukti į užklausos turinį.

Daugiau informacijos: "Upsert" naudojimas kuriant arba atnaujinant įrašą

Pastaba.

Paprastai kurdami naują įrašą leidžiate sistemai priskirti pirminio rakto GUID reikšmę. Tai geriausia praktika, nes sistema generuoja indeksui optimizuotus raktus ir tai pagerina našumą. Tačiau jei reikia sukurti įrašą su konkrečia pirminio rakto reikšme, pvz., kai rakto GUID reikšmę generuoja išorinė sistema, upsert operacija suteikia būdą tai padaryti.

Neleisti kurti arba atnaujinti naudojant upsert

Kartais būna situacijų, kai norite atlikti upsert, bet norite užkirsti kelią vienai iš galimų operacijų: kurti arba atnaujinti. Tai galite padaryti naudodami If-Match arba If-None-Match antraštes. Daugiau informacijos rasite Upsert operacijų ribojimas.

Pagrindinis ištrynimas

Naikinimo operacija yra paprasta. Naudokite DELETE veiksmažodį su objekto, kurį norite panaikinti, URI. Šiame pranešimo pavyzdyje panaikinamas kliento objektas, kurio pirminio rakto accountid reikšmė yra 00000000-0000-0000-000000000001.

Prašymą:

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  

Atsakas:

Jei objektas yra, gausite įprastą atsakymą su būsena 204, nurodantį, kad naikinimas buvo sėkmingas. Jei objektas nerandamas, gausite atsakymą, kurio būsena yra 404.

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Tikrinti, ar nėra pasikartojančių įrašų

Daugiau informacijos apie tai, kaip tikrinti, ar naujinimo operacijos metu nėra pasikartojančių įrašų, ieškokite Dublikatų aptikimas naujinimo operacijos metu naudojant žiniatinklio API.

Kelių įrašų naikinimas vienoje užklausoje

Greičiausias būdas panaikinti kelis to paties tipo įrašus vienoje užklausoje yra naudoti DeleteMultiple veiksmą. Šio rašymo DeleteMultiple metu veiksmas yra peržiūros funkcija. Standartinės lentelės nepalaiko šio veiksmo, bet visos elastingos lentelės tai daro.

Pastaba.

Standartinėms lentelėms rekomenduojame naudoti veiksmą Masinis naikinimas, kuris įgalina asinchroninį užklausą atitinkančių įrašų naikinimą. Daugiau informacijos: Masinis duomenų naikinimas

Daugiau informacijos:

Atnaujinkite ir ištrinkite dokumentus saugyklos skaidiniuose

Jei atnaujinate arba naikinate skaidiniuose saugomus elastinės lentelės duomenis, būtinai nurodykite skaidinio raktą, kai pasiekiate tuos duomenis.

Daugiau informacijos: PartitionId reikšmės pasirinkimas

Taip pat žr.

Žiniatinklio API pagrindinių operacijų pavyzdys (C#)
Žiniatinklio API pagrindinių operacijų pavyzdys (kliento pusės "JavaScript")
Operacijų atlikimas naudojant žiniatinklio API
Http užklausų kūrimas ir klaidų tvarkymas
Duomenų užklausa naudojant žiniatinklio API
Lentelės eilutės kūrimas naudojant žiniatinklio API
Lentelės eilutės nuskaitymas naudojant žiniatinklio API
Lentelės eilučių susiejimas ir atsiejimas naudojant žiniatinklio API
Naudokite žiniatinklio API funkcijas
Žiniatinklio API veiksmų naudojimas
Paketinių operacijų vykdymas naudojant žiniatinklio API
Apsimetinėjimas kitu vartotoju naudojant žiniatinklio API
Sąlyginių operacijų atlikimas naudojant žiniatinklio API