Действие: исправление RLS для room_bookings_analytics¶
Дата: 2026-03-16
Связанные документы: - [[docs/15_результаты/результат_rls_room_bookings_analytics]] - [[docs/16_изменения/изменение_rls_room_bookings_analytics]]
Контекст¶
При создании бронирования (в том числе в пользовательском сценарии сразу после регистрации) операция падала с ошибкой:
new row violates row-level security policy for table "room_bookings_analytics"
Таблица public.room_bookings_analytics — теневая (shadow) аналитическая таблица, синхронизируемая триггером с public.room_bookings.
Что сделано¶
- Добавлена миграция, которая:
- делает триггер-функцию синхронизации
public.sync_room_bookings_analytics()SECURITY DEFINER; - фиксирует владельца функции на
postgres; - включает RLS на
public.room_bookings_analytics(идемпотентно); - добавляет точечные RLS-политики для
anonиauthenticated, разрешающие изменения только внутри триггера (pg_trigger_depth() > 0).
Файл миграции: - [[supabase/migrations/20260316113000_room_bookings_analytics_trigger_rls.sql]]
Как проверять¶
После применения миграции:
- создание записи в public.room_bookings не должно падать из-за RLS на public.room_bookings_analytics;
- прямой доступ к public.room_bookings_analytics через Data API (без service_role) остаётся закрытым (SELECT не разрешён, а INSERT/UPDATE/DELETE разрешены только при pg_trigger_depth() > 0).