Closed6
Supabaseにトリガを設定する
peersテーブルを削除したときにroomsテーブルのmemberカラムを-1するトリガがほしい。
Supabase公式の説明
新しい関数定義をplpgsqlでするには
関数定義の例
トリガ定義
関数はこんな感じでどうだろう。
JavaScriptに慣れていると、セミコロンが重要な意味を持つことを忘れてしまうので注意しないといけない。
/**
* roomsテーブルのmemberをへらす
*/
create function public.handle_delete_peer()
returns trigger as $$
begin
update public.rooms
set member = member - 1
where id = old.rooms_id;
return old;
end;
$$ language plpgsql security definer;
トリガーの設定
create trigger on_peer_deleted
after delete on public.peers
for each row execute procedure public.handle_delete_peer();
ついでにroomsのメンバが0以下になったらレコードを削除するようにする。
/**
* roomがupdateしたときにmemberが0人以下のレコードを削除
*/
create function public.handle_update_room()
returns trigger as $$
begin
delete from public.rooms
where id = old.id and member <= 0;
return old;
end;
$$ language plpgsql security definer;
create trigger on_room_updated
after update on public.rooms
for each row execute procedure public.handle_update_room();
このスクラップは2022/06/05にクローズされました