يعدّل سياسة الصفوف.
الصياغة:
-- Rename: exactly one fully qualified policy (one name on one target).
-- RENAME TO may be combined with the same optional alteration clauses as below.
ALTER [ROW] POLICY [IF EXISTS] name
ON { [database.]table | database.* }
RENAME TO new_name
[ON CLUSTER cluster_name]
[AS {PERMISSIVE | RESTRICTIVE}]
[FOR SELECT]
[USING {condition | NONE}][,...]
[TO {role [,...] | ALL | ALL EXCEPT role [,...]}]
-- Multiple names on one table target (no RENAME)
ALTER [ROW] POLICY [IF EXISTS] name [, ...]
[ON CLUSTER cluster_name]
ON { [database.]table | database.* }
[AS {PERMISSIVE | RESTRICTIVE}]
[FOR SELECT]
[USING {condition | NONE}][,...]
[TO {role [,...] | ALL | ALL EXCEPT role [,...]}]
-- One name on multiple table targets (no RENAME)
ALTER [ROW] POLICY [IF EXISTS] name
[ON CLUSTER cluster_name]
ON { [database.]table | database.* } [, ...]
[AS {PERMISSIVE | RESTRICTIVE}]
[FOR SELECT]
[USING {condition | NONE}][,...]
[TO {role [,...] | ALL | ALL EXCEPT role [,...]}]
-- Mixed packing: each name paired with its own table target (no RENAME)
ALTER [ROW] POLICY [IF EXISTS]
name ON { [database.]table | database.* } [, name ON { [database.]table | database.* } ...]
[ON CLUSTER cluster_name]
[AS {PERMISSIVE | RESTRICTIVE}]
[FOR SELECT]
[USING {condition | NONE}][,...]
[TO {role [,...] | ALL | ALL EXCEPT role [,...]}]لا يُقبل RENAME TO إلا إذا كانت العبارة تسمّي سياسة واحدة فقط على جدول هدف واحد. لا يمكن أن تتضمن القوائم المجمّعة التي تحتوي على عدة أسماء أو عدة جداول RENAME TO — أعد تسمية تلك السياسات في عبارات منفصلة. وفي صيغة السياسة الواحدة هذه، يمكن أيضًا دمج RENAME TO مع تعديلات أخرى مثل AS وUSING وTO في العبارة نفسها.
من دون RENAME TO، يتوافق التجميع مع ParserRowPolicyNames: عدة أسماء على هدف واحد، أو اسم واحد على أهداف متعددة، أو أزواج مختلطة من name ON target. لا يُقبل استخدام عدة أسماء × عدة جداول (p1, p2 ON t1, t2). يُطبَّق ON CLUSTER الاختياري مرة واحدة على العبارة بأكملها؛ شغّل عبارات ALTER ROW POLICY منفصلة عند الحاجة إلى عناقيد مختلفة.
أمثلة:
-- Single-policy rename
ALTER ROW POLICY p1 ON db.table RENAME TO p1_new;
-- Rename plus other alterations on the same single policy
ALTER POLICY old_name ON db.table RENAME TO new_name USING id > 10;
-- Multiple names, one table
ALTER POLICY p1, p2 ON db.table TO ALL;
-- One name, multiple tables
ALTER POLICY p1 ON db.table, db.table2 USING NONE;
-- Mixed targets without rename
ALTER POLICY p1 ON db.table, p2 ON db2.table2 TO ALL;جزء من: ALTER
ذو صلة: CREATE ROW POLICY، ALTER، SHOW