-
728x90
데이터베이스 트리거란?
데이터베이스 트리거는 특정 이벤트에 반응하여 자동으로 실행되는 코드
테이블에 데이터 변경(삽입, 수정, 삭제)과 같은 이벤트가 발생했을 때, 미리 정의된 작업을 수행하도록 설정
자동화된 작업: 특정 이벤트 발생 시 관련 작업을 자동으로 처리하여 업무 효율성
BEGIN INSERT INTO public.users (id, name, created_at) VALUES ( NEW.id, NEW.raw_user_meta_data ->> 'name', NOW() ); UPDATE auth.users SET raw_user_meta_data = raw_user_meta_data || '{"role": "user"}'::jsonb WHERE auth.users.id = NEW.id; RETURN NEW; END;
auth.users 테이블에 새로운 사용자가 삽입될 때 자동으로 실행
- public.users 테이블에 새 사용자 정보 삽입:
- INSERT INTO public.users ... : public.users 테이블에 새로운 행을 삽입합니다.
- NEW.id: 새로 삽입된 auth.users 행의 id 값을 가져와 public.users 테이블의 id 컬럼에 넣습니다. NEW는 트리거가 실행되는 현재 행의 데이터를 참조하는 특별한 변수입니다.
- NEW.raw_user_meta_data ->> 'name': auth.users 테이블의 raw_user_meta_data 컬럼은 JSONB 형식의 데이터를 저장하고 있습니다. ->> 연산자를 사용하여 JSON 객체에서 'name' 키에 해당하는 값을 추출하여 public.users 테이블의 name 컬럼에 넣습니다. 이것은 auth.users 테이블의 사용자 메타데이터에서 이름을 가져와 public.users 테이블에 저장하는 것을 의미합니다.
- NOW(): 현재 시각을 public.users 테이블의 created_at 컬럼에 넣습니다.
- auth.users 테이블의 사용자 메타데이터 업데이트:
- UPDATE auth.users ...: auth.users 테이블을 업데이트합니다.
- SET raw_user_meta_data = raw_user_meta_data || '{"role": "user"}'::jsonb: || 연산자는 JSONB 객체를 병합하는 데 사용됩니다. 기존 raw_user_meta_data에 {"role": "user"} JSON 객체를 추가합니다. ::jsonb는 명시적으로 JSONB 타입으로 캐스팅하는 역할을 합니다. 결과적으로, 새로 생성된 사용자의 메타데이터에 "role" 속성을 추가하고 "user" 값을 할당합니다.
- WHERE auth.users.id = NEW.id: auth.users 테이블에서 id가 새로 삽입된 행의 id와 일치하는 행을 찾아서 업데이트합니다.
- RETURN NEW;: 트리거 함수는 반드시 RETURN 문을 포함해야 합니다. NEW를 반환함으로써 삽입 작업을 계속 진행하도록 지시합니다.
'ai 채팅' 카테고리의 다른 글
사용자가 입력 한 데이터 open ai로 보내기 (0) 2025.03.05 테이블 구성 수정 (0) 2025.03.05 사용자 정보 가져오기 (0) 2025.02.14 open ai (0) 2025.02.12 DB설계 (0) 2025.02.05 - public.users 테이블에 새 사용자 정보 삽입: