supabaseにおけるトランザクション処理

- 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')