supabase : 트리거 함수로 Auth와 public 테이블 연동하기

derek·2024년 10월 26일
0
  1. 기존 트리거와 함수 삭제

먼저, 기존에 설정된 트리거와 함수를 삭제합니다:

-- 트리거 삭제
DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users;

-- 함수 삭제
DROP FUNCTION IF EXISTS public.handle_new_user();
  1. 새로운 트리거 함수 생성

이제 새로운 트리거 함수를 생성합니다:

CREATE OR REPLACE FUNCTION public.handle_new_user()
RETURNS trigger
LANGUAGE plpgsql
SECURITY DEFINER SET search_path = public
AS $$
BEGIN
  INSERT INTO public.users (id, email, name, image)
  VALUES (
    NEW.id,
    NEW.email,
    COALESCE(NEW.raw_user_meta_data->>'name', ''),
    COALESCE(NEW.raw_user_meta_data->>'avatar_url', '')
  )
  ON CONFLICT (id) DO NOTHING;

  RETURN NEW;
EXCEPTION
  WHEN OTHERS THEN
    RAISE LOG 'Error in handle_new_user: %', SQLERRM;
    RETURN NEW;
END;
$$;
  1. 트리거 다시 생성

마지막으로, 새로운 트리거를 생성합니다:

CREATE TRIGGER on_auth_user_created
AFTER INSERT ON auth.users
FOR EACH ROW EXECUTE FUNCTION public.handle_new_user();
profile
derek

0개의 댓글