CREATE JOIN POLICY¶
Erstellt eine neue Verknüpfungsrichtlinie im aktuellen/angegebenen Schema oder ersetzt eine vorhandene Verknüpfungsrichtlinie.
Nachdem Sie eine Verknüpfungsrichtlinie erstellt haben, weisen Sie die Richtlinie mit dem Befehl ALTER TABLE einer Tabelle oder mit dem Befehl ALTER VIEW einer Ansicht zu. Alternativ können Sie einer Tabelle bei ihrer Erstellung auch eine Verknüpfungsrichtlinie zuweisen.
- Siehe auch:
Syntax¶
CREATE [ OR REPLACE ] JOIN POLICY [ IF NOT EXISTS ] <name>
AS () RETURNS JOIN_CONSTRAINT -> <body>
[ COMMENT = '<string_literal>' ]
Parameter¶
name
Bezeichner für die Verknüpfungsrichtlinie; muss für Ihr Schema eindeutig sein.
Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"
). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.
AS () RETURNS JOIN_CONSTRAINT
Signatur und Rückgabetyp der Police. Die Signatur akzeptiert keine Argumente, und der Rückgabetyp ist der interne Datentyp JOIN_CONSTRAINT. Alle Verknüpfungsrichtlinien haben die gleiche Signatur und den gleichen Rückgabetyp.
body
SQL-Ausdruck, der die Einschränkungen einer Verknüpfungsrichtlinie bestimmt.
Um den Hauptteil (Body) der Verknüpfungsrichtlinie zu definieren, rufen Sie die Funktion JOIN_CONSTRAINT auf, die TRUE oder FALSE zurückgibt. Wenn die Funktion TRUE zurückgibt, müssen Abfragen eine Verknüpfung verwenden, um Ergebnisse zu liefern.
Die Syntax der JOIN_CONSTRAINT-Funktion lautet:
JOIN_CONSTRAINT ( { JOIN_REQUIRED => <boolean_expression> } )
Wobei:
JOIN_REQUIRED => boolean_expression
Gibt an, ob eine Verknüpfung in Abfragen erforderlich ist, wenn Daten aus Tabellen oder Ansichten ausgewählt werden, denen die Verknüpfungsrichtlinie zugewiesen ist.
Der Hauptteil (body) einer Richtlinie kann nicht auf benutzerdefinierte Funktionen, Tabellen oder Ansichten verweisen.
Erlaubte Verknüpfungspalten werden in der Anweisung CREATE oder ALTER für die Tabelle oder die Ansicht angegeben, auf die die Richtlinie angewendet wird, nicht in der Anweisung CREATE JOIN POLICY.
COMMENT = 'string_literal'
Fügt einen Kommentar hinzu oder überschreibt einen vorhandenen Kommentar für die Verknüpfungsrichtlinie.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
CREATE JOIN POLICY |
Schema |
USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Weitere Informationen über die Verknüpfungsrichtlinien-DDL und Berechtigungen finden Sie unter Verwalten von Verknüpfungsrichtlinien.
Nutzungshinweise¶
Wenn Sie eine bestehende Verknüpfungsrichtlinie aktualisieren möchten und den aktuellen Hauptteil (Body) der Richtlinie anzeigen müssen, führen Sie den Befehl DESCRIBE JOIN POLICY oder die Funktion GET_DDL aus.
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¶
Erstellen Sie eine Verknüpfungsrichtlinie, die verlangt, dass Abfragen eine Verknüpfung enthalten (wenn die Richtlinie auf Tabellen und Ansichten angewendet wird, die in diesen Abfragen erscheinen):
CREATE JOIN POLICY jp1 AS () RETURNS JOIN_CONSTRAINT -> JOIN_CONSTRAINT(JOIN_REQUIRED => TRUE);
Erstellen Sie eine Verknüpfungsrichtlinie, die es einem Benutzer mit der Rolle ACCOUNTADMIN erlaubt, Abfragen ohne Verknüpfungen durchzuführen; andere Benutzer müssen Verknüpfungsabfragen durchführen:
CREATE JOIN POLICY jp2 AS () RETURNS JOIN_CONSTRAINT -> CASE WHEN CURRENT_ROLE() = 'ACCOUNTADMIN' THEN JOIN_CONSTRAINT(JOIN_REQUIRED => FALSE) ELSE JOIN_CONSTRAINT(JOIN_REQUIRED => TRUE) END;