FindUniqueFindFirst는 Prisma ORM에서 제공하는 데이터 조회 메서드입니다. 이 두 메서드는 비슷해 보이지만 중요한 차이점이 있습니다. 이에 대해 자세히 알아보도록 하겠습니다.


FindUnique와 FindFirst 비교

FindUnique

FindUnique는 고유 식별자나 고유 제약 조건이 설정된 필드를 기반으로 단일 레코드를 조회할 때 사용합니다.

// 예시: id로 사용자 찾기
const user = await prisma.user.findUnique({
  where: {
    id: 1
  }
});

// 예시: 이메일로 사용자 찾기 (이메일이 unique 제약조건이 있을 때)
const user = await prisma.user.findUnique({
  where: {
    email: "[email protected]"
  }
});

FindFirst

FindFirst는 다양한 조건에 맞는 첫 번째 레코드를 찾을 때 사용합니다.

// 예시: 활성 상태인 첫 번째 사용자 찾기
const user = await prisma.user.findFirst({
  where: {
    isActive: true
  }
});

// 예시: 조건과 정렬을 함께 사용
const user = await prisma.user.findFirst({
  where: {
    age: { gte: 18 }
  },
  orderBy: {
    createdAt: 'desc'
  }
});

phone 칼럼이 unique, not null일 때의 시나리오

만약 phone 칼럼이 unique와 not null 제약조건을 갖고 있고, 중복된 phone 값이 데이터베이스에 삽입되려고 한다면:

중복 삽입 시도 시