prisma multi index / 다중 index

agnusdei·2023년 8월 7일
0

@@unique 데코레이터를 사용하여 복수의 컬럼에 고유성 제약을 추가하고 싶다면 Prisma 모델을 다음과 같이 수정할 수 있습니다. 이렇게 하면 nametel 컬럼의 조합이 고유해야 합니다.

model User {
  id       Int     @id @default(autoincrement())
  name     String
  tel      String
  
  @@unique([name, tel])
}

위의 코드에서 @@unique([name, tel]) 데코레이터는 nametel 컬럼의 조합이 고유해야 함을 나타냅니다. 따라서 같은 nametel 값을 가진 두 개 이상의 레코드를 데이터베이스에 추가할 수 없습니다.

이제 이 모델을 사용하여 Prisma 쿼리를 작성하여 조회를 수행해보겠습니다.

const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();

async function getUserByNameAndTel(name, tel) {
  const user = await prisma.user.findUnique({
    where: {
      name_tel: {
        name: name,
        tel: tel,
      },
    },
  });

  return user;
}

getUserByNameAndTel('John Doe', '123-456-7890')
  .then((user) => {
    console.log(user);
  })
  .finally(async () => {
    await prisma.$disconnect();
  });

위의 코드에서 name_telnametel 컬럼의 조합을 나타내는 Prisma의 내부 필드 이름입니다. findUnique 메서드를 사용하여 고유한 레코드를 조회하고 있습니다. 이 쿼리는 내부적으로 데이터베이스에 해당하는 인덱스를 활용하여 데이터를 검색합니다.

이제 복수의 컬럼에 @@unique 데코레이터를 추가한 Prisma 모델을 사용하여 데이터를 저장하고 조회할 수 있습니다.

0개의 댓글