supabaseにおけるトランザクション処理
概要
DB操作を行う際に複雑な処理の場合には複数のSQL文を実行する必要が出てくる。この際に必須となるトランザクションという概念とsupabaseにおける実行方法をメモっておく。
トランザクションとは
複数の SQL 文によるデータ更新を1つの処理としてまとめてデータベースに反映させること。例えばデータベースへ何かしらのUPDATEをしたら、更新ログを残すという処理をする場合、UPDATEと更新ログへのINSERTがトランザクションとなる。
supabaseでの実行方法
とてもシンプル
1. functionsで実行したい関数を定義
2. supabase.rpc()
で定義した関数を呼び出す
実装例
functions
create or replace function update_hoge()
returns bool
language plpgsql
as $$
begin
// update
update fuga
set hogehoge = "fugafuga";
// insert
insert into hoge_log values
("fugafuga");
return true;
end;
$$;
front
const { data } = await supabase.rpc('update_hoge')