Zum Hauptinhalt springen

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:

OptionDescription
ARCHIVESoft-Delete – die Entität wird als archiviert markiert und aus den Abfrageergebnissen ausgeschlossen (Standard)
ERASEHard-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"
}
]
)
}
}
}
vorsicht

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:

FieldTypeDescription
rtIdOctoObjectIdDer Runtime-Identifier der Entität
ckTypeIdStringDer 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
info

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.