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 π
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.
Kalau view-nya dibuat dengan:
create view vw_daily_transaction_recap
as
select ...
from public.transactions;
Maka:
select * from vw_daily_transaction_recap;transactions otomatis.