Делите путем


Ажурирајте и избришите редове табеле помоћу Веб АПИ-ја

Операције за модификацију података су кључни део Веб АПИ-ја. Поред једноставних операција ажурирања и брисања, можете изводити операције на појединачним колонама табеле (атрибути ентитета) и саставити упсерт захтеве који ће ажурирати или убацити податке у зависности од тога да ли постоје.

Основно ажурирање

Операције ажурирања користе ХТТП PATCH глагол. Проследите ЈСОН објекат који садржи особине које желите да ажурирате на УРИ који представља запис. Одговор са статусом се 204 No Content враћа ако је ажурирање успешно.

Заглавље If-Match: * осигурава да не креирате нови запис случајним извођењем операције упсерт. Више информација: Спречите стварање у упсерт-у .

Важно

Када ажурирате ентитет, укључите само својства која мењате у телу захтева. Једноставно ажурирање својстава ентитета који сте претходно преузели, и укључивање тог ЈСОН-а у ваш захтев, ажурираће сваку особину иако је вредност иста. Ово може изазвати системске догађаје који могу покренути пословну логику која очекује да су се вредности промениле. Ово може довести до тога да се чини да су својства ажурирана у подацима о ревизији када се у ствари нису променила.

Када ажурирате имовину statecode , важно је да увек подесите жељени statuscode. statecode и statuscode имају зависне вредности. Може постојати више валидних statuscode вредности за дату statecode вредност, али свака statecode колона има једну ДефаултСтатус вредност конфигурисану. Када ажурирате statecode без навођења , statuscode подразумевана вредност статуса ће бити постављена од стране система. Такође, када је ревизија омогућена у табели и колони, statuscode промењена вредност за колону statuscode неће бити заробљена у подацима ревизије, осим ако је наведена у операцији ажурирања.

Белешка

Дефиниција атрибута укључује особину RequiredLevel . Када је ово подешено на SystemRequired, не можете подесити ове атрибуте на нулту вредност. Више информација: Ниво захтева за атрибуте

Овај пример ажурира постојећи запис рачуна са accountid вредношћу 00000000-0000-0000-0000-000000000001.

Захтев:

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  
}  

Одговор:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Белешка

Погледајте Коришћење једновредних својстава навигације за информације о повезивању и раздвајању ентитета приликом ажурирања.

Ажурирајте са вратитим подацима

Да бисте преузели податке из ентитета који ажурирате, можете саставити свој PATCH захтев тако да се подаци из креираног записа врате са статусом 200 (ОК). Да бисте добили овај резултат, морате користити заглавље Prefer: return=representation захтева.

Да бисте контролисали која својства се враћају, додајте опцију упита $select УРЛ-у скупа ентитета. Опција $expand упита се игнорише ако се користи.

Овај пример ажурира ентитет налога и враћа тражене податке у одговору.

Захтев:

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

Одговор:

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

Ажурирајте више записа у једном захтеву

Најбржи начин за ажурирање више записа истог типа у једном захтеву је да користите акцију УпдатеМултие . У време писања овог текста, акција УпдатеМултипле . Не подржавају све стандардне табеле ову акцију, али све еластичне табеле подржавају.

Још информација:

Ажурирајте једну вредност особине

Када желите да ажурирате само једну вредност особине, користите PUT захтев са именом особине која се додаје на Ури ентитета.

Следећи пример ажурира особину name постојећег account реда са вредношћу accountid 00000000-0000-0000-0000-00000000001.

Захтев:

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

Одговор:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Обришите једну вредност особине

Да бисте избрисали вредност једне особине, користите DELETE захтев са именом особине доданим на Ури ентитета.

Следећи пример брише вредност description имовине ентитета рачуна са accountid вредношћу 00000000-0000-0000-0000-00000000001.

Захтев:

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  

Одговор:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Белешка

Ово се не може користити са једновредном навигацијском особином за раздвајање два ентитета. За алтернативни приступ, погледајте Прекид везе са једновредном навигацијом особине .

Упсерт ред табеле

Операција упсерт је слична ажурирању. Користи PATCH захтев и користи УРИ за позивање на одређени запис. Разлика је у томе што ако запис не постоји, он је створен. Ако већ постоји, ажурира се.

Упсерт је драгоцен приликом синхронизације података између спољних система. Спољни систем не може да садржи референцу на примарни кључ Датаверсе табеле, тако да можете конфигурисати алтернативне кључеве за Датаверсе табелу користећи вредности из спољног система који јединствено идентификују запис на оба система. Више информација: Дефинишите алтернативне кључеве за референтне редове

Можете видети све алтернативне кључеве који су дефинисани за табелу у напоменама за тип ентитета у документу $ метадата сервиса. Више информација: Алтернативни тастери .

У следећем примеру, постоји табела са именом sample_thing која има алтернативни кључ који се односи на две колоне: sample_key1 и sample_key2, који су оба дефинисана за чување целих вредности.

Захтев:

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

За обе операције креирања или ажурирања добијате исти одговор. Обратите пажњу на то како заглавље одговора OData-EntityId користи кључне вредности, а не идентификатор примарног кључа ГУИД-а за запис.

Одговор:

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)

Пошто је одговор исти, не можете знати да ли је операција представљала операцију Create или Update .

Ако желите да знате, можете користити заглавље Prefer: return=representation захтева. Са овим заглављем, добијате 201 Created одговор када се креира запис и 200 OK одговор када се запис ажурира. Ова опција додаје операцију Retrieve , која утиче на перформансе. Ако користите заглавље Prefer: return=representation захтева, уверите се да ваш $select укључује минималну количину података, пожељно само колону примарног кључа. Више информација: Ажурирај са враћеним подацима и Креирај са враћеним подацима.

Када користите алтернативне кључеве, не би требало да укључите алтернативне вредности кључа у телу захтева.

  • Када упсерт представља Update, ове алтернативне кључне вредности се игноришу. Не можете ажурирати алтернативне кључне вредности док их користите за идентификацију записа.
  • Када упсерт представља Create, кључне вредности у УРЛ-у су постављене за запис ако нису присутне у телу. Дакле , нема потребе да их укључите у тело захтева.

Више информација: Користите Упсерт за креирање или ажурирање записа

Белешка

Нормално када креирате нови запис дозволићете систему да додели ГУИД вредност за примарни кључ. Ово је најбоља пракса јер систем генерише кључеве који су оптимизовани за индекс и то побољшава перформансе. Али ако је потребно да креирате запис са одређеном примарном кључном вредношћу, као што је када је кључна ГУИД вредност генерисана од стране спољног система, upsert операција пружа начин да се то уради.

Спречите креирање или ажурирање са упсерт

Понекад постоје ситуације у којима желите да извршите upsert, али желите да спречите једну од потенцијалних операција: или креирајте или ажурирајте. То можете урадити помоћу If-MatchIf-None-Match или заглавља. За више информација, погледајте Ограничите упсерт операције .

Основно брисање

Операција брисања је једноставна. Користите DELETE глагол са УРИ-јем ентитета који желите да избришете. Овај пример поруке брише ентитет налога са accountid примарном кључном вредношћу једнаком 00000000-0000-0000-0000-0000000000001.

Захтев:

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  

Одговор:

Ако ентитет постоји, добијате нормалан одговор са статусом 204 који указује на то да је брисање било успешно. Ако ентитет није пронађен, добићете одговор са статусом 404.

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Провера дуплих записа

За више информација о томе како проверити дупле записе током операције ажурирања, погледајте Откривање дупликата током операције ажурирања помоћу Веб АПИ-ја .

Избришите више записа у једном захтеву

Најбржи начин да избришете више записа истог типа у једном захтеву је да користите акцију DeleteMultiple . У време писања овог текста, DeleteMultiple акција је функција прегледа. Стандардне табеле не подржавају ову акцију, али све еластичне табеле подржавају.

Белешка

За стандардне табеле, препоручујемо коришћење акције БулкДелете , која омогућава асинхроно брисање записа који одговарају упиту. Више информација: Брисање података у великој мери

Још информација:

Ажурирање и брисање докумената у партицијама за складиштење

Ако обнављате или бришете податке еластичне табеле смештене на партицијама, будите сигурни да специфицирате кључ партиције када приступате тим подацима.

Више информација: Избор ПартитионИд вредности

Такође погледајте

Узорак основних операција Веб АПИ-ја (Ц #)
Узорак основних операција Веб АПИ-ја (ЈаваСцрипт на страни клијента)
Обављање операција помоћу Веб АПИ-ја
Саставите Хттп захтеве и грешке у руковању
Упитни подаци помоћу Веб АПИ-ја
Креирајте ред табеле користећи Веб АПИ
Преузмите ред табеле користећи Веб АПИ
Повежите и одвојите редове табеле користећи Веб АПИ
Користите Веб АПИ функције
Користите Веб АПИ акције
Извршите батцх операције користећи Веб АПИ
Лажно представљање другог корисника користећи Веб АПИ
Извршите условне операције користећи Веб АПИ