ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 트리거
    ai 채팅 2025. 2. 11. 17:12
    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
Designed by Tistory.