@@unique
데코레이터를 사용하여 복수의 컬럼에 고유성 제약을 추가하고 싶다면 Prisma 모델을 다음과 같이 수정할 수 있습니다. 이렇게 하면 name
과 tel
컬럼의 조합이 고유해야 합니다.
model User {
id Int @id @default(autoincrement())
name String
tel String
@@unique([name, tel])
}
위의 코드에서 @@unique([name, tel])
데코레이터는 name
과 tel
컬럼의 조합이 고유해야 함을 나타냅니다. 따라서 같은 name
과 tel
값을 가진 두 개 이상의 레코드를 데이터베이스에 추가할 수 없습니다.
이제 이 모델을 사용하여 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_tel
은 name
과 tel
컬럼의 조합을 나타내는 Prisma의 내부 필드 이름입니다. findUnique
메서드를 사용하여 고유한 레코드를 조회하고 있습니다. 이 쿼리는 내부적으로 데이터베이스에 해당하는 인덱스를 활용하여 데이터를 검색합니다.
이제 복수의 컬럼에 @@unique
데코레이터를 추가한 Prisma 모델을 사용하여 데이터를 저장하고 조회할 수 있습니다.