ALTER ROW POLICY

ALTER ROW POLICY

행 정책(row policy)을 변경해요.

출처: 문서

본문

Syntax:

-- 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 문을 실행해야 해요.

Examples:

-- 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;

Part of: ALTER

Related: CREATE ROW POLICY, ALTER, SHOW

더 알아보기 (Learn more)