Dalintis per


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

Operacijas, kurios keičia duomenis, 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 atnaujina arba įterpia duomenis, atsižvelgiant į tai, 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, atsakymas grąžina būseną 204 No Content.

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

Svarbu

Atnaujindami objektą, į užklausos tekstą įtraukite tik tas ypatybes, kurias keičiate. Jei atnaujinate objektą įtraukdami visas objekto ypatybes, kurias anksčiau nuskaitėte, operacija atnaujina kiekvieną ypatybę, net jei reikšmė yra ta pati. Šis naujinimas gali sukelti sistemos įvykius, kurie suaktyvina verslo logiką, kuri tikisi, kad reikšmės pasikeitė. Dėl to ypatybės gali būti atnaujintos audito duomenyse, kai jos iš tikrųjų nepasikeitė.

Atnaujindami statecode ypatybę visada nustatykite norimą statuscode. Ir statuscode reikšmės statecode priklauso viena nuo kitos. Tam tikrai statecode reikšmei gali būti kelios galiojančios statuscode reikšmės. Tačiau kiekviename statecode stulpelyje sukonfigūruota viena DefaultStatus reikšmė. Kai naujinate statecode nenurodydami statuscode, sistema nustato numatytąją būsenos reikšmę. Be to, jei įgalinsite lentelės ir statuscode stulpelio tikrinimą, pakeista stulpelio reikšmė statuscode nebus užfiksuota audito duomenyse, nebent ją nurodysite naujinimo operacijoje.

Pastaba.

Atributų apibrėžimas apima RequiredLevel ypatybę. Kai ši ypatybė nustatyta kaip SystemRequired, negalite nustatyti šių atributų kaip nulinės reikšmės. Daugiau informacijos rasite 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, sukurkite PATCH užklausą taip, kad ji grąžintų duomenis iš atnaujinto įrašo, kurio būsena yra 200 (Gerai). Norėdami gauti šį rezultatą, naudokite 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. Ne visos standartinės lentelės palaiko šį veiksmą, bet visos elastingos lentelės.

Daugiau informacijos:

Vienos ypatybės reikšmės naujinimas

Norėdami atnaujinti vieną ypatybės reikšmę, naudokite užklausą PUT ir įtraukite ypatybės pavadinimą į objekto URI.

Toliau pateiktame pavyzdyje atnaujinama name esamos account eilutės ypatybė su accountid reikšme 00000000-0000-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 reikšmėdescription, 00000000-0000-0000-0000-000000000001kurios accountid reikšmė yra .

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.

Negalite naudoti šio metodo su vienos reikšmės naršymo ypatybe, kad atsietumėte du objektus. Alternatyvų metodą rasite Atsieti naudojant vienos reikšmės naršymo ypatybę.

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

Abiem kūrimo arba naujinimo operacijoms 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, neįtraukite 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ę. Ši praktika yra geriausia, nes sistema generuoja indeksui optimizuotus raktus ir šis pasirinkimas 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 norite atlikti upsert , bet užkirsti kelią vienai iš galimų operacijų: kurti arba atnaujinti. Galite užkirsti kelią šioms operacijoms naudodami If-MatchIf-None-Match arba 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ė lygi 00000000-0000-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

Norėdami panaikinti kelis to paties tipo įrašus vienoje užklausoje, naudokite šį DeleteMultiple veiksmą. Standartinės lentelės nepalaiko šio DeleteMultiple veiksmo, bet visos elastingos lentelės daro.

Pastaba.

Standartinėms lentelėms naudokite veiksmą BulkDelete. Šis veiksmas įgalina asinchroninį užklausą atitinkančių įrašų naikinimą. Daugiau informacijos rasite Masinis duomenų naikinimas.

Daugiau informacijos:

Atnaujinkite ir ištrinkite dokumentus saugyklos skaidiniuose

Jei atnaujinate arba naikinate skaidiniuose saugomus elastinės lentelės duomenis, 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