หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
การดําเนินการปรับเปลี่ยนข้อมูลเป็นส่วนหลักของ API เว็บ นอกเหนือจากการอัปเดตอย่างง่ายและลบการดําเนินการ คุณสามารถดําเนินการกับคอลัมน์ตารางเดียว (แอตทริบิวต์เอนทิตี) และเขียนคําขอ upsert ที่จะอัปเดตหรือแทรกข้อมูลขึ้นอยู่กับว่ามีอยู่หรือไม่
การปรับปรุงพื้นฐาน
การดําเนินการอัปเดตใช้คํากริยา HTTP PATCH ส่งผ่านวัตถุ JSON ที่มีคุณสมบัติที่คุณต้องการอัปเดตไปยัง URI ที่แสดงระเบียน การตอบกลับที่มีสถานะ 204 No Content จะแสดงขึ้นมาถ้าการอัปเดตเสร็จสมบูรณ์
ส่วนหัว If-Match: * ช่วยให้แน่ใจว่าคุณไม่สร้างเรกคอร์ดใหม่โดยการดําเนินการ upsert โดยไม่ได้ตั้งใจ ข้อมูลเพิ่มเติม: ป้องกันการสร้างในขั้นตอน upsert
สําคัญ
เมื่ออัปเดตเอนทิตี เฉพาะคุณสมบัติที่คุณกําลังเปลี่ยนแปลงในเนื้อความของคําขอเท่านั้น เพียงแค่อัปเดตคุณสมบัติของเอนทิตีที่คุณเรียกใช้ก่อนหน้านี้ และรวมถึง JSON ดังกล่าวในคําขอของคุณ จะอัปเดตแต่ละคุณสมบัติแม้ว่าค่าจะเหมือนกันก็ตาม ซึ่งอาจทําให้เกิดเหตุการณ์ของระบบที่สามารถทริกเกอร์ตรรกะทางธุรกิจที่คาดว่าจะมีการเปลี่ยนแปลงค่า ซึ่งอาจทําให้คุณสมบัติปรากฏขึ้นได้รับการอัปเดตในข้อมูลการตรวจสอบเมื่อในความเป็นจริงพวกเขาไม่ได้เปลี่ยนแปลงจริง ๆ
เมื่อคุณอัปเดต statecode คุณสมบัติ สิ่งสําคัญคือต้องตั้งค่า ที่ต้องการ statuscodeเสมอ
statecode และ statuscode มีค่าที่ขึ้นต่อกัน สามารถมีหลายค่าที่ถูกต้อง statuscode สําหรับค่าที่กําหนด statecode แต่แต่ละ statecode คอลัมน์มีการกําหนดค่า DefaultStatus เดียว เมื่อคุณอัพเดต statecode โดยไม่ระบุ statuscodeระบบจะตั้งค่าสถานะเริ่มต้นเป็น นอกจากนี้ เมื่อเปิดใช้งานการตรวจสอบในตารางและ statuscode คอลัมน์ ค่าที่เปลี่ยนแปลงสําหรับ statuscode คอลัมน์จะไม่ถูกบันทึกในข้อมูลการตรวจสอบ เว้นแต่ว่ามีการระบุไว้ในการดําเนินการอัปเดต
Note
ข้อกําหนดสําหรับแอตทริบิวต์ประกอบด้วย RequiredLevel คุณสมบัติ เมื่อตั้งค่า SystemRequiredเป็น คุณไม่สามารถตั้งค่าแอตทริบิวต์เหล่านี้เป็นค่า Null ได้ ข้อมูลเพิ่มเติม: ระดับข้อกําหนดของแอตทริบิวต์
ตัวอย่างนี้จะอัปเดตเรกคอร์ดบัญชีที่มีอยู่ด้วย accountid ค่า 00000000-0000-0000-0000-000000000000
ขอร้อง:
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
Note
ดู การใช้คุณสมบัติการนําทางแบบเดี่ยว สําหรับข้อมูลเกี่ยวกับการเชื่อมโยงและการแยกเอนทิตีในการอัปเดต
อัปเดตด้วยข้อมูลที่ได้รับกลับมา
เมื่อต้องการดึงข้อมูลจากเอนทิตีที่คุณกําลังอัปเดต คุณสามารถเขียนการร้องขอของคุณ PATCH เพื่อให้ข้อมูลจากระเบียนที่สร้างขึ้นถูกส่งกลับด้วยสถานะ 200 (ตกลง) เพื่อให้ได้ผลลัพธ์นี้ คุณต้องใช้ส่วนหัวของ Prefer: return=representation คําขอ
เมื่อต้องการควบคุมว่าจะส่งกลับคุณสมบัติใด ให้ $select ผนวกตัวเลือกคิวรีเข้ากับ URL ไปยังชุดเอนทิตี ตัวเลือก $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"
}
อัปเดตหลายระเบียนในคําขอเดียว
วิธีที่เร็วที่สุดในการอัปเดตหลายเรกคอร์ดของประเภทเดียวกันในคําขอเดียวคือการใช้การดําเนินการ UpdateMultiple ณ ขณะที่เขียนบทความนี้ การดำเนินการ UpdateMultiple ตารางมาตรฐานทั้งหมดไม่สนับสนุนการดําเนินการนี้ แต่ตารางแบบยืดหยุ่นทั้งหมดจะสนับสนุน
ข้อมูลเพิ่มเติม:
- ข้อความการดำเนินการแบบกลุ่ม
- ตัวอย่าง: API เว็บใช้การดําเนินการแบบกลุ่ม
- ใช้ UpdateMultiple กับตารางแบบยืดหยุ่น
อัปเดตค่าพร็อพเพอร์ตี้เดียว
เมื่อคุณต้องการอัปเดตเพียงค่าคุณสมบัติเดียว ให้ใช้ PUT คําขอที่มีชื่อคุณสมบัติต่อท้าย Uri ของเอนทิตี
ตัวอย่างต่อไปนี้อัปเดต name คุณสมบัติของแถวที่มีอยู่ account ด้วย accountid ค่า 00000000-0000-0000-0000-0000-000000000000
ขอร้อง:
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 คําขอที่มีชื่อคุณสมบัติต่อท้าย Uri ของเอนทิตี
ตัวอย่างต่อไปนี้ลบค่าของคุณสมบัติของ description เอนทิตีบัญชีที่มี accountid ค่า 00000000-0000-0000-0000-0000-000000000001
ขอร้อง:
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
Note
ซึ่งไม่สามารถใช้กับคุณสมบัติการนําทางค่าเดียวเพื่อแยกสองเอนทิตีได้ สําหรับวิธีอื่น ดู แยกความสัมพันธ์กับคุณสมบัติการนําทางแบบค่าเดียว
เพิ่มแถวของตารางขึ้น
การดําเนินการ upsert คล้ายกับการอัปเดต ซึ่งใช้ PATCH คําขอและใช้ URI เพื่ออ้างอิงเรกคอร์ดที่ระบุ ความแตกต่างคือ ถ้าไม่มีระเบียนอยู่จริง ระเบียนนั้นจะถูกสร้างขึ้น ถ้ามีอยู่แล้ว จะมีการอัปเดต
Upsert มีประโยชน์เมื่อซิงโครไนซ์ข้อมูลระหว่างระบบภายนอก ระบบภายนอกอาจไม่ประกอบด้วยการอ้างอิงไปยังคีย์หลักของตาราง Dataverse ดังนั้นคุณสามารถกําหนดค่าคีย์สํารองสําหรับตาราง Dataverse โดยใช้ค่าจากระบบภายนอกที่ระบุเรกคอร์ดในทั้งสองระบบโดยเฉพาะ ข้อมูลเพิ่มเติม: กําหนดคีย์สํารองเพื่ออ้างอิงแถว
คุณสามารถดูคีย์สํารองใด ๆ ที่กําหนดไว้สําหรับตารางในคําอธิบายประกอบสําหรับชนิดเอนทิตี้ในเอกสารบริการ$metadata ข้อมูลเพิ่มเติม:คีย์สํารอง
ในตัวอย่างต่อไปนี้ มีตารางที่มีชื่อ 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ให้สังเกตว่าส่วนหัวการตอบสนองใช้ค่าคีย์แทนที่จะเป็นตัวระบุคีย์หลักของ GUID สําหรับบันทึก
การตอบสนอง :
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 จํานวนข้อมูลน้อยที่สุด ควรมีเฉพาะคอลัมน์คีย์หลักเท่านั้น ข้อมูลเพิ่มเติม:อัปเดตด้วยข้อมูลที่ส่งกลับและสร้างด้วยข้อมูลที่ส่งกลับ
เมื่อใช้คีย์สํารอง คุณไม่ควรรวมค่าคีย์สํารองในเนื้อความของคําขอ
- เมื่อ upsert แสดงถึง
Updateค่าคีย์สํารองเหล่านี้จะถูกละเว้น คุณไม่สามารถอัปเดตค่าคีย์สํารองในขณะที่ใช้เพื่อระบุระเบียนได้ - เมื่อ upsert แสดงเป็น
Createค่าคีย์ใน URL จะถูกกำหนดสำหรับข้อมูล หากไม่มีอยู่ในเนื้อหา ดังนั้นจึงไม่จําเป็นต้องรวมไว้ในเนื้อความของคําขอ
ข้อมูลเพิ่มเติม: ใช้ Upsert เพื่อสร้างหรืออัปเดตระเบียน
Note
โดยปกติเมื่อสร้างเรกคอร์ดใหม่ คุณจะอนุญาตให้ระบบกําหนดค่า GUID สําหรับคีย์หลัก นี่เป็นแนวทางปฏิบัติที่ดีที่สุดเนื่องจากระบบสร้างคีย์ที่ปรับให้เหมาะสมสําหรับดัชนีและสิ่งนี้ช่วยปรับปรุงประสิทธิภาพการทํางาน แต่ถ้าคุณต้องการสร้างเรกคอร์ดที่มีค่าคีย์หลักเฉพาะ เช่น เมื่อค่า GUID หลักถูกสร้างขึ้นโดยระบบ upsert ภายนอก การดําเนินการจะแสดงวิธีการทําเช่นนี้
ป้องกันการสร้างหรืออัปเดตด้วย upsert
บางครั้งมีสถานการณ์ที่คุณต้องการดําเนินการ upsertแต่คุณต้องการป้องกันไม่ให้หนึ่งในการดําเนินการที่เป็นไปได้คือ สร้างหรืออัปเดต คุณสามารถทําได้โดยใช้ ส่วนหัว If-Match หรือIf-None-Match สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การจำกัดการปฏิบัติงาน upsert.
การลบพื้นฐาน
การดําเนินการลบจะตรงไปตรงมา ใช้คํา DELETE กริยากับ URI ของเอนทิตีที่คุณต้องการลบ ข้อความตัวอย่างนี้จะลบเอนทิตีบัญชีที่มีค่าคีย์ accountid หลักเท่ากับ 00000000-0000-0000-0000-00000-000000000000
ขอร้อง:
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
ตรวจสอบระเบียนที่ซ้ํากัน
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการตรวจสอบระเบียนที่ซ้ํากันในระหว่างการดําเนินการอัปเดต ดูตรวจหารายการซ้ําระหว่างการดําเนินการอัปเดตโดยใช้ API เว็บ
ลบหลายระเบียนในคําขอเดียว
วิธีที่เร็วที่สุดเมื่อต้องลบหลายเรกคอร์ดของชนิดเดียวกันในคําขอเดียวคือการใช้ DeleteMultiple การดําเนินการ ในขณะที่เขียนเนื้อหานี้ การดำเนินการ DeleteMultiple เป็นคุณลักษณะรุ่นพรีวิว ตารางมาตรฐานไม่สนับสนุนการดําเนินการนี้ แต่ตารางแบบยืดหยุ่นทั้งหมดจะสนับสนุน
Note
สําหรับตารางมาตรฐาน เราขอแนะนําให้ใช้ การดําเนินการ BulkDelete ที่เปิดใช้งานการลบเรกคอร์ดแบบอะซิงโครนัสที่ตรงกับคิวรี ข้อมูลเพิ่มเติม: ลบข้อมูลเป็นกลุ่ม
ข้อมูลเพิ่มเติม:
อัพเดตและลบเอกสารในพาร์ติชันที่เก็บข้อมูล
ถ้าคุณกําลังอัปเดตหรือลบข้อมูลตารางแบบยืดหยุ่นที่จัดเก็บไว้ในพาร์ติชัน ตรวจสอบให้แน่ใจว่าได้ระบุคีย์พาร์ติชันเมื่อเข้าถึงข้อมูลนั้น
ข้อมูลเพิ่มเติม: การเลือกค่า PartitionId
ดูเพิ่มเติม
ตัวอย่างการดําเนินการพื้นฐานของ API เว็บ (C#)
ตัวอย่างการดําเนินการพื้นฐานของ API เว็บ (JavaScript ฝั่งไคลเอ็นต์)
ดําเนินงานโดยใช้ Web API
เขียนคําขอ Http และจัดการข้อผิดพลาด
สืบค้นข้อมูลโดยใช้ Web API
สร้างแถวตารางโดยใช้ API เว็บ
ดึงข้อมูลแถวของตารางโดยใช้ API ของเว็บ
เชื่อมโยงและแยกแถวตารางโดยใช้ API เว็บ
ใช้ฟังก์ชัน API เว็บ
ใช้การดำเนินการ Web API
การดําเนินการชุดงานโดยใช้ API เว็บ
เลียนแบบผู้ใช้อื่นโดยใช้ API เว็บ
ดําเนินการตามเงื่อนไขโดยใช้ API เว็บ