먼저, 기존에 설정된 트리거와 함수를 삭제합니다:
-- 트리거 삭제
DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users;
-- 함수 삭제
DROP FUNCTION IF EXISTS public.handle_new_user();
이제 새로운 트리거 함수를 생성합니다:
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;
$$;
마지막으로, 새로운 트리거를 생성합니다:
CREATE TRIGGER on_auth_user_created
AFTER INSERT ON auth.users
FOR EACH ROW EXECUTE FUNCTION public.handle_new_user();