SELECT view_definition
FROM information_schema.views
WHERE table_name = 'nama_view';

🟒 Betul banget β€” kamu paham tepat sekali!

Penjelasannya sedikit lebih dalam ya biar lengkap πŸ‘‡


πŸ’‘ Kenapa view tidak bisa diberi policy

Di PostgreSQL (dan Supabase):

Row-Level Security (RLS) hanya bisa diterapkan pada tabel dan materialized view,

❌ bukan pada view biasa.

Jadi saat kamu tulis:

create policy "admin only view"
on public.vw_daily_transaction_recap
for select
to authenticated
using (...);

akan muncul error seperti:

RLS policies cannot be applied to views

Karena view itu hanyalah query β€œvirtual” β€” dia tidak punya data sendiri, hanya menampilkan hasil dari tabel lain.

Dan PostgreSQL menegakkan RLS hanya di sumber data (tabel), bukan di view-nya.


βš™οΈ Bagaimana RLS bekerja lewat view

Kalau view-nya dibuat dengan:

create view vw_daily_transaction_recap
as
select ...
from public.transactions;

Maka: