Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.
UNSET
Entfernt eine Sitzungsvariable oder löscht die mit SET gesetzte Laufzeitkonfiguration für die aktuelle Sitzung. Verfügbar in StackQL v1.0 und höher.
Siehe auch:
[SET] [ Sitzungsvariablen ] [ Provider-Sitzungen ]
Syntax
unsetStatement::=
UNSET [ SESSION ] <target> [, <target> ...];
target
Jedes von SET akzeptierte Ziel: ein einfacher Variablenname oder ein Variablenname in doppelten Anführungszeichen, oder ein Konfigurationspfad mit Dollar-Präfix in doppelten Anführungszeichen.
SESSION
Optional und der einzige Gültigkeitsbereich, den es gibt: UNSET SESSION name und UNSET name sind dieselbe Anweisung, weil jede Variable und jede Konfigurationseinstellung zur aktuellen Sitzung gehört. UNSET GLOBAL wird mit configuration scope "global" is not supported; use SESSION abgewiesen.
UNSET name ist gleichbedeutend mit SET name = DEFAULT. Ziele in einer Liste werden der Reihe nach entfernt, und das Entfernen eines nicht gesetzten Namens ist kein Fehler. Das Dereferenzieren einer Variable, nachdem sie entfernt wurde, schlägt fehl, bevor eine Provider-Anfrage gestellt wird.
| Ziel | Wirkung |
|---|---|
name | Entfernt die Sitzungsvariable. |
"$.auth.<provider>.<field>" | Löscht dieses Feld aus dem Sitzungs-Authentifizierungskontext des Providers. Der vor der Überschreibung geltende Wert wird nicht wiederhergestellt. |
"$.providers.<alias>" | Entfernt die Provider-Alias-Bindung. |
"$.secrets.<name>" | Löscht das Secret aus dem Store der Sitzung. Bei einem persistenten Store des Betriebssystems wird der gespeicherte Wert gelöscht. |
"$.secret_store" | Verwirft die aktuelle Store-Bindung und beginnt mit leerem Sitzungsspeicher. Bereits in einem Store des Betriebssystems persistierte Werte werden nicht gelöscht. |
Beispiele
Eine Variable entfernen
Die Variable wird aus der Sitzung entfernt, sodass die auskommentierte Abfrage mit variable "$region" is not defined fehlschlägt, statt mit einem veralteten oder leeren Wert zu laufen. Setzen Sie den Namen erneut, um ihn wiederzuverwenden.
SET region = 'ap-southeast-2';
UNSET region;
/*
SELECT name FROM aws.s3.buckets WHERE region = $region;
-- FAILS with variable "$region" is not defined
*/
Mehrere Ziele entfernen
Eine Anweisung kann Variablen und Konfigurationspfade gemeinsam entfernen; die Ziele werden der Reihe nach verarbeitet. Hier werden eine einfache Variable, eine Variable mit einem Namen mit Punkten und eine Anmeldedaten-Überschreibung in einer Liste entfernt.
UNSET region, "providers.saved", "$.auth.github.credentialsenvvar";
Den Sitzungsbereich explizit angeben
Diese beiden Anweisungen tun dasselbe: SESSION benennt den einzigen Gültigkeitsbereich, den es gibt. Die explizite Form eignet sich für Skripte, die auch auf Datenbanken laufen, die zwischen Sitzungs- und globalem Zustand unterscheiden. Die auskommentierte Anweisung schlägt fehl, weil kein geteilter Zustand existiert.
UNSET region;
UNSET SESSION region;
/*
UNSET GLOBAL region;
-- FAILS with configuration scope "global" is not supported; use SESSION
*/
Eine Anmeldedaten-Überschreibung aufheben
Das zuvor mit SET "$.auth.github.credentialsenvvar" gesetzte Feld wird aus dem Sitzungs-Authentifizierungskontext des GitHub-Providers gelöscht; die anderen Felder dieses Kontexts bleiben unberührt. Der vor der Überschreibung geltende Wert wird nicht wiederhergestellt; setzen Sie das Feld daher erneut, wenn der Provider es weiterhin benötigt.
UNSET "$.auth.github.credentialsenvvar";
Einen Provider-Alias und sein Secret entfernen
Der Alias production wurde mit SET "$.providers.production" gebunden und verweist über auth_secret auf ein unter $.secrets.production gespeichertes Secret. Das Entfernen beider in einer Anweisung hebt die Bindung auf, sodass production.s3.buckets keine gültige Relation mehr ist, und löscht das Secret aus dem Sitzungs-Store. SESSION ist hier wie überall optional.
UNSET SESSION "$.providers.production", "$.secrets.production";