Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Vorgänge zum Ändern von Daten sind ein zentraler Bestandteil der Web-API. Zusätzlich zu einfachen Aktualisierungs- und Löschvorgängen können Sie Vorgänge für einzelne Tabellenspalten (Entitätsattribute) ausführen und Upsertanforderungen verfassen, die Daten aktualisieren oder einfügen, je nachdem, ob sie vorhanden ist.
Grundlegende Aktualisierung
Aktualisierungsvorgänge verwenden das HTTP-Verb PATCH . Übergeben Sie ein JSON-Objekt, das die Eigenschaften enthält, die Sie an den URI aktualisieren möchten, der den Datensatz darstellt. Eine Antwort mit einem Status von 204 No Content wird zurückgegeben, wenn das Update erfolgreich ist.
Die If-Match: * Kopfzeile stellt sicher, dass Sie keinen neuen Datensatz erstellen, indem Sie versehentlich einen Upsert-Vorgang ausführen. Weitere Informationen: Erstellung bei Upsert verhindern.
Von Bedeutung
Schließen Sie beim Aktualisieren einer Entität nur die Eigenschaften ein, die Sie im Anforderungstext ändern. Durch einfaches Aktualisieren der Eigenschaften einer zuvor abgerufenen Entität und das Einfügen dieses JSON in Ihre Anforderung wird jede Eigenschaft aktualisiert, auch wenn der Wert derselbe ist. Dies kann zu Systemereignissen führen, die Geschäftslogik auslösen können, die erwartet, dass sich die Werte geändert haben. Dies kann dazu führen, dass Eigenschaften in Überwachungsdaten aktualisiert wurden, wenn sie tatsächlich nicht geändert wurden.
Wenn Sie die statecode Eigenschaft aktualisieren, ist es wichtig, immer die gewünschte statuscodeEigenschaft festzulegen.
statecode und statuscode abhängige Werte aufweisen. Es kann mehrere gültige statuscode Werte für einen bestimmten statecode Wert geben, aber jede statecode Spalte hat einen einzelnen DefaultStatus-Wert konfiguriert. Wenn Sie statecode aktualisieren, ohne ein statuscode anzugeben, wird der Standardwert vom System festgelegt. Wenn die Überwachung für die Tabelle und die statuscode Spalte aktiviert ist, wird der geänderte Wert für die statuscode Spalte nicht in den Überwachungsdaten erfasst, es sei denn, sie wird im Aktualisierungsvorgang angegeben.
Hinweis
Die Definition für Attribute enthält eine RequiredLevel Eigenschaft. Wenn dies auf SystemRequired festgelegt ist, können Sie diese Attribute nicht auf einen Nullwert festlegen. Weitere Informationen: Attributanforderungsstufe
In diesem Beispiel wird ein vorhandener Kontodatensatz mit dem accountid Wert 0000000-0000-0000-0000-0000000001 aktualisiert.
Anforderung:
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
}
Antwort:
HTTP/1.1 204 No Content
OData-Version: 4.0
Hinweis
Informationen zum Zuordnen und Aufheben der Zuordnung von Entitäten bei der Aktualisierung finden Sie unter Verwenden von Einzelwertnavigationseigenschaften.
Aktualisieren mit zurückgegebenen Daten
Zum Abrufen von Daten aus einer Entität, die Sie aktualisieren, können Sie Ihre PATCH Anforderung erstellen, sodass Daten aus dem erstellten Datensatz mit dem Status 200 (OK) zurückgegeben werden. Um dieses Ergebnis zu erhalten, müssen Sie den Anforderungsheader Prefer: return=representation verwenden.
Um die zurückgegebenen Eigenschaften zu steuern, hängen Sie die $select-Abfrageoption für die URL im Entitätssatz an. Die $expand Abfrageoption wird bei Verwendung ignoriert.
In diesem Beispiel wird eine Kontoentität aktualisiert und die angeforderten Daten in der Antwort zurückgegeben.
Anforderung:
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"}
Antwort:
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"
}
Aktualisieren mehrerer Datensätze in einer einzelnen Anforderung
Die schnellste Möglichkeit zum Aktualisieren mehrerer Datensätze desselben Typs in einer einzigen Anforderung besteht darin, die UpdateMultiple-Aktion zu verwenden. Zum Zeitpunkt dieses Schreibens handelt es sich um die UpdateMultiple-Aktion. Nicht alle Standardtabellen unterstützen diese Aktion, alle elastischen Tabellen jedoch.
Weitere Informationen:
- Massenvorgang für Nachrichten
- Beispiel: Web-API für Massenvorgänge nutzen
- Verwenden von UpdateMultiple mit elastischen Tabellen
Einen einzelnen Eigenschaftswert aktualisieren
Wenn Sie nur einen einzelnen Eigenschaftswert aktualisieren möchten, verwenden Sie eine PUT Anforderung mit dem Eigenschaftsnamen, der an den URI der Entität angefügt ist.
Im folgenden Beispiel wird die name Eigenschaft einer vorhandenen account Zeile mit dem accountid Wert 0000000-0000-0000-0000-0000-000000001 aktualisiert.
Anforderung:
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"}
Antwort:
HTTP/1.1 204 No Content
OData-Version: 4.0
Löschen eines einzelnen Eigenschaftswerts
Verwenden Sie zum Löschen des Werts einer einzelnen Eigenschaft eine DELETE Anforderung mit dem Eigenschaftsnamen, der an den URI der Entität angefügt wurde.
Im folgenden Beispiel wird der Wert der description Eigenschaft einer Kontoentität mit dem accountid Wert 0000000-0000-0000-0000-0000-000000001 gelöscht.
Anforderung:
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
Antwort:
HTTP/1.1 204 No Content
OData-Version: 4.0
Hinweis
Dies kann nicht bei einer Navigationseigenschaft mit einem einzelnen Wert verwendet werden, um zwei Entitäten zu distanzieren. Für einen alternativen Ansatz vergleichen Sie Die Zuordnung mit einer einzelwertigen Navigationseigenschaft aufheben.
Upsert einer Tabellenzeile
Ein Upsert-Vorgang ähnelt einem Update. Es verwendet eine PATCH Anforderung und verwendet einen URI, um auf einen bestimmten Datensatz zu verweisen. Der Unterschied ist, dass der Datensatz nicht existiert, er wird erstellt. Wenn sie bereits vorhanden ist, wird sie aktualisiert.
Upsert ist nützlich, wenn Daten zwischen externen Systemen synchronisiert werden. Das externe System enthält möglicherweise keinen Verweis auf den Primärschlüssel der Dataverse-Tabelle, sodass Sie alternative Schlüssel für die Dataverse-Tabelle mithilfe von Werten aus dem externen System konfigurieren können, die den Datensatz auf beiden Systemen eindeutig identifizieren. Weitere Informationen: Alternativschlüssel für Referenzzeilen definieren
Sie können alle alternativen Schlüssel sehen, die für eine Tabelle in den Anmerkungen für den Entitätstyp im $metadata-Dienstdokument definiert sind. Weitere Informationen: Alternative Schlüssel.
Im folgenden Beispiel gibt es eine Tabelle mit dem Namen sample_thing mit einem alternativen Schlüssel, der sich auf zwei Spalten bezieht: sample_key1 und sample_key2, die beide zum Speichern ganzzahliger Werte definiert sind.
Anforderung:
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"
}
Für sowohl Erstellungs- als auch Aktualisierungsvorgänge erhalten Sie die gleiche Antwort. Beachten Sie, dass der OData-EntityId Antwortheader die Schlüsselwerte anstelle des GUID-Primärschlüsselbezeichners für den Datensatz verwendet.
Antwort:
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)
Da die Antwort identisch ist, können Sie nicht wissen, ob der Vorgang einen Create Oder Update Vorgang darstellt.
Wenn Sie wissen müssen, können Sie den Anforderungsheader Prefer: return=representation verwenden. Mit diesem Header erhalten Sie eine 201 Created Antwort, wenn ein Datensatz erstellt wird, und eine 200 OK Antwort, wenn der Datensatz aktualisiert wird. Diese Option fügt einen Retrieve Vorgang hinzu, der auswirkungen auf die Leistung hat. Wenn Sie den Anforderungsheader Prefer: return=representation verwenden, stellen Sie sicher, dass Ihre $select die minimale Datenmenge enthält, vorzugsweise nur die Primärschlüsselspalte. Weitere Informationen: Aktualisieren mit zurückgegebenen Daten und Erstellen mit zurückgegebenen Daten.
Wenn Sie alternative Schlüssel verwenden, sollten Sie die alternativen Schlüsselwerte nicht im Textkörper der Anforderung einschließen.
- Wenn ein Upsert einen
UpdateWert darstellt, werden diese alternativen Schlüsselwerte ignoriert. Sie können alternative Schlüsselwerte nicht aktualisieren, während Sie sie verwenden, um den Datensatz zu identifizieren. - Wenn ein Upsert einen
Createdarstellt, werden die Schlüsselwerte in der URL für den Datensatz festgelegt, wenn sie nicht im Hauptteil vorhanden sind. Daher ist es nicht erforderlich, sie in den Textkörper der Anforderung aufzunehmen.
Weitere Informationen: Verwenden von Upsert zum Erstellen oder Aktualisieren eines Datensatzes
Hinweis
Normalerweise können Sie beim Erstellen eines neuen Datensatzes dem System einen GUID-Wert für den Primärschlüssel zuweisen. Dies ist eine bewährte Methode, da das System Schlüssel generiert, die für den Index optimiert sind und dies die Leistung verbessert. Wenn Sie jedoch einen Datensatz mit einem bestimmten Primärschlüsselwert erstellen müssen, z. B. wenn der Schlüssel-GUID-Wert von einem externen System generiert wird, bietet der upsert Vorgang hierfür eine Möglichkeit.
Verhindern Sie das Erstellen oder Aktualisieren mit Upsert
Manchmal gibt es Situationen, in denen Sie eine upsertAktion ausführen möchten, aber Sie möchten einen der potenziellen Vorgänge verhindern: entweder erstellen oder aktualisieren. Dazu können Sie die Header If-Match oder If-None-Match verwenden. Für weitere Informationen siehe upsert-Vorgänge begrenzen.
Grundlegende Löschung
Ein Löschvorgang ist einfach. Verwenden Sie das DELETE Verb mit dem URI der Entität, die Sie löschen möchten. Diese Beispielnachricht löscht eine Kontoentität mit dem Primärschlüsselwert accountid 00000000-0000-0000-0000-00000000001.
Anforderung:
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
Antwort:
Wenn die Entität vorhanden ist, erhalten Sie eine normale Antwort mit dem Status 204, um anzugeben, dass der Löschvorgang erfolgreich war. Wenn die Entität nicht gefunden wird, erhalten Sie eine Antwort mit dem Status 404.
HTTP/1.1 204 No Content
OData-Version: 4.0
Nach doppelten Datensätzen suchen
Weitere Informationen zum Überprüfen auf doppelte Datensätze während eines Aktualisierungsvorgangs finden Sie unter Erkennen von Duplikaten während des Aktualisierungsvorgangs mithilfe der Web-API.
Löschen mehrerer Datensätze in einer einzigen Anforderung
Die schnellste Möglichkeit zum Löschen mehrerer Datensätze desselben Typs in einer einzigen Anforderung besteht darin, die DeleteMultiple Aktion zu verwenden. Zum Zeitpunkt dieses Verfassens ist die DeleteMultiple Aktion eine Vorschaufunktion. Standardtabellen unterstützen diese Aktion nicht, aber alle elastischen Tabellen unterstützen sie.
Hinweis
Für Standardtabellen empfehlen wir die Verwendung der BulkDelete-Aktion, die das asynchrone Löschen von Datensätzen ermöglicht, die einer Abfrage entsprechen. Weitere Informationen: Massenlöschen von Daten
Weitere Informationen:
- Massenvorgang für Nachrichten
- Beispielcode für elastische Tabellen
- Verwenden von DeleteMultiple mit elastischen Tabellen
Aktualisieren und Löschen von Dokumenten in Speicherpartitionen
Wenn Sie Daten aus elastischen Tabellen, die in Partitionen gespeichert sind, aktualisieren oder löschen, geben Sie beim Zugriff auf diese Daten unbedingt den Partitionsschlüssel an.
Weitere Informationen: Auswählen eines PartitionId-Werts
Siehe auch
Beispiel grundlegender Web-API-Operationen (C#)
Beispiel grundlegender Web API-Operationen (clientseitiges JavaScript)
Ausführen von Vorgängen mithilfe der Web-API
HTTP-Anforderungen verfassen und Fehler beheben
Datenabfrage mit Web-API
Erstellen einer Tabellenzeile mithilfe der Web-API
Abrufen einer Tabellenzeile über die Web-API
Zuordnen und Aufheben der Zuordnung von Tabellenzeilen über die Web-API
Web-API-Funktionen verwenden
Nutzen von Web-API-Aktionen
Ausführen von Batchvorgängen mithilfe der Web-API
Annehmen eines anderen Benutzerkontos mit der Web-API
Bedingte Vorgänge mithilfe der Web-API ausführen