Kategorien:

DDL für Tabellen, Ansichten und Sequenzen

ALTER ROW ACCESS POLICY

Ändert die Eigenschaften einer vorhandenen Zeilenzugriffsrichtlinie, einschließlich der Umbenennung der Richtlinie oder des Ersetzens der Richtlinienregeln.

Alle an den Richtlinienregeln vorgenommenen Änderungen werden bei Ausführung der nächsten SQL-Abfrage wirksam, die die Zeilenzugriffsrichtlinie verwendet.

Siehe auch:

DDL für Tabellen, Ansichten und Sequenzen

Unter diesem Thema:

Syntax

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> SET BODY -> <expression_ON_VAL>

ALTER ROW ACCESS POLICY [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER ROW ACCESS POLICY [ IF EXISTS ] <NAME> SET COMMENT = '<string_literal>'

Parameter

Name

Bezeichner für die Zeilenzugriffsrichtlinie. Dieser muss im übergeordneten Schema der Richtlinie eindeutig sein.

Der Bezeichnerwert muss mit einem alphabetischen Zeichen 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 Details dazu finden Sie unter Anforderungen an Bezeichner.

Ausdruck_ON_VAL

SQL-Ausdruck, der die Daten filtert.

Der Ausdruck kann Funktionen für bedingte Ausdrücke enthalten, um bedingte Logik, integrierte Funktionen oder UDFs zur Datentransformation darzustellen.

Wenn eine UDF oder externe Funktion innerhalb des Richtlinientextes der Zeilenzugriffsrichtlinie verwendet wird, muss der Richtlinieneigentümer die OWNERSHIP-Berechtigung für die UDF oder die externe Funktion haben. Benutzer, die ein Datenbankobjekt abfragen, auf die eine Zeilenzugriffsrichtlinie angewendet wurde, müssen keine USAGE-Berechtigung für die UDF oder die externe Funktion haben.

COMMENT = 'Zeichenfolgenliteral'

Fügt einen Kommentar hinzu oder überschreibt den vorhandenen Kommentar für die Maskierungsrichtlinie.

Standard: Kein Wert

RENAME TO neuer_Name

Gibt den neuen Bezeichner für die Zeilenzugriffsrichtlinie an, der für Ihr Schema eindeutig sein muss. Der neue Bezeichner kann nicht verwendet werden, wenn der Bezeichner bereits für eine andere Richtlinie (z. B. eine Maskierungsrichtlinie) verwendet wurde.

Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.

Nutzungshinweise

  • Wenn Sie eine bestehende Zeilenzugriffsrichtlinie aktualisieren möchten und dazu die aktuelle Definition der Richtlinie anzeigen müssen, können Sie die Funktion GET_DDL aufrufen oder den Befehl DESCRIBE ROW ACCESS POLICY ausführen.

  • Sie können die Richtliniensignatur (d. h. den Argumentnamen oder den Eingabe-/Ausgabedatentyp) nicht ändern. In ähnlicher Weise wird die Verwendung von CREATE OR REPLACE ROW ACCESS POLICY nicht unterstützt, wenn die Richtlinie an eine Tabelle oder Ansicht angehängt ist. Wenn Sie die Signatur ändern müssen, führen Sie eine DROP ROW ACCESS POLICY-Anweisung für die Richtlinie aus, und erstellen Sie dann eine neue Zeilenzugriffsrichtlinie.

  • Bevor Sie eine ALTER-Anweisung ausführen, können Sie mithilfe der DESCRIBE ROW ACCESS POLICY-Anweisung den Argumentnamen ermitteln, der zum Aktualisieren der Richtlinie verwendet werden soll.

  • Das Einfügen einer oder mehrerer Unterabfragen in den Richtlinientext kann zu Fehlern führen. Wenn möglich, begrenzen Sie die Anzahl der Unterabfragen, begrenzen Sie die Anzahl der JOIN-Operationen, und vereinfachen Sie die Bedingungen der WHERE-Klausel.

  • Das Verschieben einer Zeilenzugriffsrichtlinie in ein verwaltetes Zugriffsschema (unter Verwendung der ALTER ROWACCESSPOLICY … RENAME TO-Syntax) ist nicht erlaubt, es sei denn, der Eigentümer der Zeilenzugriffsrichtlinie (d. h. die Rolle mit der Berechtigung OWNERSHIP für die Zeilenzugriffsrichtlinie) ist auch Eigentümer des Zielschemas.

Beispiele

Das folgende Beispiel aktualisiert die Zeilenzugriffsrichtlinie.

-- determine current definition

desc row access policy rap_table_employee_info;

+-------------------------+-------------+-------------+------+
| name                    | signature   | return_type | body |
+-------------------------+-------------+-------------+------+
| rap_table_employee_info | (V VARCHAR) | BOOLEAN     | true |
+-------------------------+-------------+-------------+------+

alter row access policy rap_table_employee_info set body -> false;