ALTER VIEW¶
Ändert die Eigenschaften einer bestehenden Ansicht. Derzeit werden nur die folgenden Operationen unterstützt:
Umbenennen einer Ansicht.
Konvertieren in (oder Zurücksetzen von) einer sicheren Ansicht.
Hinzufügen, Überschreiben, Entfernen eines Kommentars für eine Ansicht.
Beachten Sie, dass Sie mit diesem Befehl die Definition für eine Ansicht nicht ändern können. Um die Definition einer Ansicht zu ändern, müssen Sie die Ansicht löschen und anschließend neu erstellen.
- Siehe auch:
Syntax¶
ALTER VIEW [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER VIEW [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER VIEW [ IF EXISTS ] <name> UNSET COMMENT
ALTER VIEW <name> SET SECURE
ALTER VIEW <name> SET CHANGE_TRACKING = { TRUE | FALSE }
ALTER VIEW <name> UNSET SECURE
ALTER VIEW [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER VIEW [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER VIEW [ IF EXISTS ] <name>
ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])
ALTER VIEW [ IF EXISTS ] <name>
DROP ROW ACCESS POLICY <policy_name>
ALTER VIEW [ IF EXISTS ] <name>
DROP ROW ACCESS POLICY <policy_name>
, ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])
ALTER VIEW [ IF EXISTS ] <name> DROP ALL ROW ACCESS POLICIES
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> SET MASKING POLICY <policy_name> [ USING ( <col_name> , cond_col_1 , ... ) ]
[ FORCE ]
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> UNSET MASKING POLICY
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> SET TAG <tag_name> = '<string_literal>' [ , <tag_name> = '<string_literal>' ... ]
ALTER VIEW <name> { ALTER | MODIFY } COLUMN <col_name> UNSET TAG <tag_name> [ , <tag_name> ... ]
Parameter¶
name
Gibt den Bezeichner für die zu ändernde Ansicht an. Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.
RENAME TO new_name
Gibt den neuen Bezeichner für die Ansicht an. Dieser muss für das Schema eindeutig sein.
Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.
Sie können das Objekt in eine andere Datenbank und/oder in ein anderes Schema verschieben und dabei optional das Objekt umbenennen. Geben Sie dazu einen qualifizierten
new_name
-Wert an, der den neuen Datenbank- und/oder Schemanamen im Formatdb_name.schema_name.object_name
bzw.schema_name.object_name
enthält.Bemerkung
Die Zieldatenbank und/oder das Zielschema müssen bereits vorhanden sein. Außerdem darf in der Zieldatenbank nicht bereits ein gleichnamiges Schema vorhanden sein, da die Anweisung sonst einen Fehler zurückgibt.
Das Verschieben eines Objekts in ein verwaltetes Zugriffsschema ist nicht zulässig, es sei denn, der Objekteigentümer (d. h. die Rolle mit der Berechtigung OWNERSHIP für das Objekt) ist auch Eigentümer des Zielschemas.
Wenn ein Objekt umbenannt wird, müssen andere Objekte, die darauf verweisen, mit dem neuen Namen aktualisiert werden.
SET ...
Gibt die Eigenschaft an, die für die Ansicht festgelegt werden soll:
SECURE
Gibt eine Ansicht als sicher an.
CHANGE_TRACKING = TRUE | FALSE
Gibt an, dass die Änderungsverfolgung in der Tabelle aktiviert oder deaktiviert werden soll.
TRUE
aktiviert die Änderungsverfolgung für die Ansicht und kaskadiert die Einstellung auf alle zugrunde liegenden Tabellen.FALSE
deaktiviert die Änderungsverfolgung für die Ansicht und kaskadiert die Einstellung auf alle zugrunde liegenden Tabellen.
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.
Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.
Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.
COMMENT = 'string_literal'
Fügt einen Kommentar hinzu oder überschreibt einen vorhandenen Kommentar für die Ansicht.
Bemerkung
Sie müssen jede Ansichtseigenschaft einzeln einstellen.
UNSET ...
Gibt die Eigenschaft an, die für die Ansicht deaktiviert werden soll, wodurch sie auf den Standard zurückgesetzt wird:
SECURE
TAG tag_name = 'tag_value' [, TAG tag_name = 'tag_value' ... ]
COMMENT
Wenn Sie eine Eigenschaft zurücksetzen, geben Sie nur den Namen an. Die Angabe eines Wertes für die Eigenschaft gibt einen Fehler zurück.
Bemerkung
Sie müssen jede Ansichtseigenschaft einzeln zurücksetzen.
policy_name
Bezeichner für die Zeilenzugriffsrichtlinie, der für Ihr Schema eindeutig sein muss.
ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , … ])
Fügt eine Zeilenzugriffsrichtlinie zu einer Ansicht hinzu.
Es muss mindestens ein Spaltenname angegeben werden. Zusätzliche Spalten können mit einem Komma zwischen den einzelnen Spaltennamen angegeben werden.
DROP ROW ACCESS POLICY <policy_name>
Entfernt eine Zeilenzugriffsrichtlinie aus einer Ansicht.
DROP ALL ROW ACCESS POLICIES
Entfernt alle Zuordnungen von Zeilenzugriffsrichtlinien aus einer Ansicht.
Dieser Ausdruck ist hilfreich, wenn eine Zeilenzugriffsrichtlinie aus einem Schema gelöscht wird, bevor die Richtlinie aus einer Ansicht gelöscht wird.
ALTER | MODIFY <col_name> SET MASKING POLICY <policy_name>
Wendet eine Maskierungsrichtlinie auf eine Ansichtsspalte an.
USING ( col_name , cond_col_1 ... )
Gibt die Argumente an, die an den SQL-Ausdruck für die bedingte Maskierungsrichtlinie übergeben werden sollen.
Die erste Spalte in der Liste gibt die Spalte für die Richtlinienbedingungen zur Maskierung oder Tokenisierung der Daten an. Sie muss mit der Spalte übereinstimmen, für die die Maskierungsrichtlinie festgelegt ist.
Die zusätzlichen Spalten geben an, welche Spalten ausgewertet werden sollen, um zu ermitteln, ob die Daten in der jeweiligen Zeile des Abfrageergebnisses maskiert oder tokenisiert werden sollen, wenn auf der ersten Spalte eine Abfrage ausgeführt wird.
Wenn die USING-Klausel weggelassen wird, behandelt Snowflake die bedingte Maskierungsrichtlinie wie eine normale Maskierungsrichtlinie.
FORCE
Ersetzt eine Maskierungsrichtlinie, die derzeit für eine Spalte festgelegt ist, durch eine andere Maskierungsrichtlinie mit nur einer Anweisung.
Beachten Sie, dass die Verwendung des Schlüsselworts
FORCE
voraussetzt, dass der Datentyp der Richtlinie in der ALTER VIEW-Anweisung (d. h. STRING) mit dem Datentyp der aktuell für die Spalte festgelegten Maskierungsrichtlinie (d. h. STRING) übereinstimmt.Wenn für die Spalte derzeit keine Maskierungsrichtlinie festgelegt ist, hat die Angabe dieses Schlüsselworts keine Auswirkungen.
Weitere Informationen dazu finden Sie unter Maskierungsrichtlinie auf einer Spalte ersetzen.
ALTER | MODIFY <col_name> UNSET MASKING POLICY
Entfernt eine auf eine Tabellenspalte angewendeten Maskierungsrichtlinie für Sicherheit auf Spaltenebene.
Nutzungshinweise¶
Das Verschieben einer Ansicht in ein verwaltetes Zugriffsschema (unter Verwendung der ALTER VIEW … RENAME TO-Syntax) ist nicht erlaubt, es sei denn, der Eigentümer der Ansicht (d. h. die Rolle mit der Berechtigung OWNERSHIP für die Ansicht) ist auch Eigentümer des Zielschemas.
Bei Maskierungsrichtlinien:
Die
USING
-Klausel und das SchlüsselwortFORCE
sind beide optional, d. h. beide sind nicht erforderlich, um eine Maskierungsrichtlinie für eine Spalte festzulegen. DieUSING
-Klausel und das SchlüsselwortFORCE
können einzeln oder zusammen verwendet werden. Weitere Details dazu finden Sie unter:Eine einzelne Maskierungsrichtlinie, die bedingte Spalten verwendet, kann auf mehrere Tabellen angewendet werden, sofern die Spaltenstruktur der Tabelle mit den in der Richtlinie angegebenen Spalten übereinstimmt.
Wenn Sie eine oder mehrere Tabellenspalten mit Maskierungsrichtlinie oder die Tabelle selbst mit Zeilenzugriffsrichtlinie ändern, können Sie mit der Funktion POLICY_CONTEXT eine Abfrage auf den mit einer Maskierungsrichtlinie geschützten Spalten bzw. auf der mit einer Zeilenzugriffsrichtlinie geschützten Tabelle simulieren.
Eine einzelne Maskierungsrichtlinie, die bedingte Spalten verwendet, kann auf mehrere Ansichten angewendet werden, sofern die Spaltenstruktur der Ansicht mit den in der Richtlinie angegebenen Spalten übereinstimmt.
Für Zeilenzugriffsrichtlinien:
Snowflake unterstützt das Hinzufügen und Löschen von Zeilenzugriffsrichtlinien mit einer einzigen SQL-Anweisung.
Wenn Sie z. B. eine bereits für eine Tabelle festgelegte Zeilenzugriffsrichtlinie durch eine andere Richtlinie ersetzen möchten, müssen Sie zuerst die Zeilenzugriffsrichtlinie löschen und dann die neue Zeilenzugriffsrichtlinie hinzufügen.
Für eine gegebene Ressource (d. h. Tabelle oder Ansicht) müssen Sie für ein
ADD
oderDROP
der Zeilenzugriffsrichtlinie entweder über die APPLY ROW ACCESS POLICY-Berechtigung für das Schema oder über die OWNERSHIP-Berechtigung für die Ressource und die APPLY-Berechtigung für die Ressource der Zeilenzugriffsrichtlinie verfügen.Eine Tabelle oder Ansicht kann nur durch jeweils eine einzige Zeilenzugriffsrichtlinie geschützt werden. Das Hinzufügen einer Richtlinie schlägt fehl, wenn sich der Richtlinientext auf eine Tabellen- oder Ansichtsspalte bezieht, die durch eine Zeilenzugriffsrichtlinie geschützt ist, oder auf eine Spalte, die durch eine Maskierungsrichtlinie geschützt ist.
In ähnlicher Weise schlägt das Hinzufügen einer Maskierungsrichtlinie zu einer Tabellenspalte fehl, wenn der Richtlinientext der Maskierungsrichtlinie auf eine Tabelle verweist, die durch eine Zeilenzugriffsrichtlinie oder eine andere Maskierungsrichtlinie geschützt ist.
Zeilenzugriffsrichtlinien können nicht auf systemspezifische Ansichten oder Tabellenfunktionen angewendet werden.
Ähnlich wie bei anderen DROP <Objekt>-Operationen gibt Snowflake einen Fehler zurück, wenn versucht wird, eine Zeilenzugriffsrichtlinie aus einer Ressource zu löschen, der keine Zeilenzugriffsrichtlinie hinzugefügt wurde.
Wenn ein Objekt sowohl eine Zeilenzugriffsrichtlinie als auch eine oder mehrere Maskierungsrichtlinien hat, wird die Zeilenzugriffsrichtlinie zuerst ausgewertet.
Hinweis zu Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
Beispiele¶
Ansicht view1
umbenennen in view2
:
ALTER VIEW view1 RENAME TO view2;
Konvertieren einer Ansicht in eine sichere Ansicht:
ALTER VIEW view1 SET SECURE;
Stellen Sie eine sichere Ansicht auf eine Standardansicht um:
ALTER VIEW view1 UNSET SECURE;
Anwenden einer Maskierungsrichtlinie für Sicherheit auf Spaltenebene auf eine Ansichtsspalte:
-- single column ALTER VIEW user_info_v MODIFY COLUMN ssn_number SET MASKING POLICY ssn_mask_v; -- multiple columns ALTER VIEW user_info_v MODIFY COLUMN ssn_number SET MASKING POLICY ssn_mask_v , COLUMN dob SET MASKING POLICY dob_mask_v ;
Deaktivieren der auf eine Tabellenspalte angewendeten Maskierungsrichtlinie für Sicherheit auf Spaltenebene:
-- single column ALTER VIEW user_info_v modify column ssn_number unset masking policy; -- multiple columns ALTER VIEW user_info_v modify column ssn_number unset masking policy , column dob unset masking policy ;
Das folgende Beispiel fügt eine Zeilenzugriffsrichtlinie zu einer Ansicht hinzu. Nach dem Einstellen der Richtlinien können Sie diese durch Überprüfen des Information Schema verifizieren.
alter view v1 add row access policy rap_v1 on (empl_id);
Im folgenden Beispiel wird eine Zeilenzugriffsrichtlinie aus einer Ansicht entfernt. Überprüfen Sie, ob die Richtlinien gelöscht wurden, indem Sie das Information Schema abfragen.
alter view v1 drop row access policy rap_v1;
Das folgende Beispiel zeigt, wie Sie das Hinzufügen und Löschen von Zeilenzugriffsrichtlinien in einer einzigen SQL-Anweisung für eine Ansicht kombinieren. Überprüfen Sie die Ergebnisse, indem Sie das Information Schema überprüfen.
alter view v1 drop row access policy rap_v1_version_1, add row access policy rap_v1_version_2 on (empl_id);