Open2
[supabase] ユーザー作成時にusersテーブルにidを追加する
やりたいこと
ユーザー作成時にusersテーブルにidを追加する
方法
大まかな流れ
0. テーブルの設定
- 関数を作る
- 1で作った関数を実行するトリガーを作る
テーブルの設定
今回はtest_table
という名前のテーブルを作ります。
RLSは今回は設定しません
カラムは
user_id と created_at にしましょう。
user_idはuuid型にしましょう。
またnameの右にあるリンクボタンを押して、user.idと連携しておきます。
- select a schema を auth に
- reference to は users に
- user_id -> id
関数を作る
左サイドバーから Database > Functions から +create a new function をクリック
上から
- Name of function
関数の名前。わかりやすいのをつけておこう - Schema
何も考えずにpublic - Return type
Triggerにする - Argumets
触らない - Definiton
ここにsql文を書く
BEGIN
-- usersテーブルにidを挿入
INSERT INTO public.users (id)
VALUES (new.id);
RETURN NEW;
END;
解説
INSERT INTO public.users (id): usersテーブルのidに追加する
new.id: auth.usersテーブルに新しくサインアップしたユーザーのid
6. Show advanced setting
ONにして Type of Security をSECURITY DEFINER に変更しておく
今回は名前をtest_funcにしました。
トリガーを作る
謎に守られててsql editorからしか作成できないぽいので
ヘッダー右端のsql editorを使って作成します。
create trigger トリガー名 // ①任意のトリガー名
after insert on テーブル名 for each row // ②イベント対象になるテーブル。今回はauth.users
execute function 関数名 () // 上で作った関数を入れる
今回は以下のようにしました
create trigger test_trigger
after insert on auth.users for each row
execute function test_func ();
userを作成するとテーブルに追加されます🎉
メモ:
トリガーの削除の方法
以下コマンドをsql editorに入力
DROP TRIGGER my_auth_trigger ON auth.users;
参考