Delete
GraphQL ermöglicht das Abfragen und Mutieren von Daten. Mutationen sind Operationen wie Erstellen, Aktualisieren und Löschen. Dieses Kapitel beschreibt, wie Daten gelöscht werden können.
Löschoptionen
Die Löschoperation unterstützt zwei Modi über den Parameter options:
| Option | Description |
|---|---|
ARCHIVE | Soft-Delete – die Entität wird als archiviert markiert und aus den Abfrageergebnissen ausgeschlossen (Standard) |
ERASE | Hard-Delete – die Entität wird dauerhaft aus der Datenbank entfernt |
Standardmäßig werden Entitäten archiviert (ARCHIVE). Archivierte Entitäten werden bei normalen Abfragen nicht zurückgegeben, verbleiben aber in der Datenbank.
Einfache Delete-Mutation
Um Entitäten zu löschen, verwenden Sie den Endpunkt runtimeEntities mit der Operation delete. Sie müssen ein Array von RtEntityId-Objekten angeben, die sowohl die rtId als auch die ckTypeId enthalten.
mutation {
runtime {
runtimeEntities {
delete(
options: ARCHIVE
entities: [
{
rtId: "662532d5241639b42933057e"
ckTypeId: "Industry.Energy/EnergyMeter"
}
]
)
}
}
}
Das Ergebnis ist ein Boolean, der den Erfolg anzeigt:
{
"data": {
"runtime": {
"runtimeEntities": {
"delete": true
}
}
}
}
Dauerhaftes Löschen (ERASE)
Um Entitäten dauerhaft aus der Datenbank zu entfernen, verwenden Sie options: ERASE:
mutation {
runtime {
runtimeEntities {
delete(
options: ERASE
entities: [
{
rtId: "662532d5241639b42933057e"
ckTypeId: "Industry.Energy/EnergyMeter"
}
]
)
}
}
}
Die Verwendung von ERASE entfernt die Entität dauerhaft aus der Datenbank. Diese Operation kann nicht rückgängig gemacht werden.
Löschen mit Variablen
Für die programmatische Verwendung wird empfohlen, GraphQL-Variablen zu nutzen:
mutation deleteEntities($rtEntityIds: [RtEntityId]!, $options: DeleteOptions) {
runtime {
runtimeEntities {
delete(options: $options, entities: $rtEntityIds)
}
}
}
Variablen:
{
"options": "ARCHIVE",
"rtEntityIds": [
{
"rtId": "662532d5241639b42933057e",
"ckTypeId": "Industry.Energy/EnergyMeter"
}
]
}
Batch-Löschung
Mehrere Entitäten können in einer einzigen Mutation gelöscht werden. Die Entitäten können unterschiedlichen Typs sein:
mutation deleteEntities($rtEntityIds: [RtEntityId]!) {
runtime {
runtimeEntities {
delete(entities: $rtEntityIds)
}
}
}
Variablen:
{
"rtEntityIds": [
{
"rtId": "662532d5241639b42933057e",
"ckTypeId": "Industry.Energy/EnergyMeter"
},
{
"rtId": "65dc6d24cc529cdc46c84fcc",
"ckTypeId": "Industry.Energy/EnergyMeter"
},
{
"rtId": "667acc3be06025c7329fc57c",
"ckTypeId": "Basic/EquipmentGroup"
}
]
}
RtEntityId-Struktur
Der Input-Typ RtEntityId erfordert zwei Felder:
| Field | Type | Description |
|---|---|---|
rtId | OctoObjectId | Der Runtime-Identifier der Entität |
ckTypeId | String | Der Construction-Kit-Typ-Identifier (z. B. Industry.Energy/EnergyMeter) |
Beide Felder sind erforderlich, um eine Entität eindeutig zu identifizieren und zu löschen.
Kaskadenverhalten
Beachten Sie beim Löschen von Entitäten das Kaskadenverhalten:
- Assoziationen: Beim Löschen einer Entität werden alle Assoziationen entfernt, an denen diese Entität beteiligt ist
- Untergeordnete Entitäten: Abhängig von der Assoziationskonfiguration werden untergeordnete Entitäten möglicherweise automatisch gelöscht (Cascade-Delete), oder das Löschen schlägt fehl, wenn untergeordnete Entitäten vorhanden sind
Mit ARCHIVE (Standard) können Entitäten potenziell wiederhergestellt werden. Mit ERASE ist die Löschung dauerhaft und kann nicht rückgängig gemacht werden. Stellen Sie stets sicher, dass Sie über geeignete Backups verfügen, bevor Sie ERASE-Operationen auf Produktivdaten durchführen.