Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Sử dụng nhiều trường cho một khóa duy nhất trong Prisma

Tôi gặp sự cố với Prisma khiến tôi hơi mất thời gian, vì vậy tôi sẽ viết cách giải quyết vấn đề đó.

Mô hình không có id trường được đánh dấu là @id vì vậy tôi đã thêm một @@unique() để nói usertweet cùng nhau, đã xác định unique ràng buộc.

model Like {
  user      Int
  tweet     Int
  createdAt DateTime @default(now())
  @@unique([user, tweet])
}

Điều này có nghĩa là chúng tôi không thể có nhiều hơn 1 mục giống nhau của (user, tweet) mục.

Khi tôi cố gắng xóa một mục nhập bằng

await prisma.like.delete({
  where: {
    user: 1,
    tweet: 1
  }
})

Tôi gặp một thông báo lỗi:

PrismaClientValidationError: 
Invalid `prisma.like.delete()` invocation:

{
  where: {
    user: 12,
    ~~~~
    tweet: 22
    ~~~~~
  }
  ~~~~~~~~~~~
}

Argument where of type LikeWhereUniqueInput needs exactly one argument, but you provided user and tweet. Please choose one. Available args: 
type LikeWhereUniqueInput {
  user_tweet?: LikeUserTweetCompoundUniqueInput
}

Những gì tôi phải làm là thay đổi

await prisma.like.delete({
  where: {
    user: 1,
    tweet: 1
  }
})

đến

await prisma.like.delete({
  where: {
    user_tweet: {
      user: 1,
      tweet: 1
    }
  }
})

Nói cách khác, kết hợp các trường duy nhất nối chúng bằng dấu gạch dưới.

Khi nhìn lại, thông báo lỗi giống như giải thích điều này, nhưng tôi không hiểu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu chỉ sao lưu trong WHM

  2. Cách nhận xét trong SQL

  3. CHÈN SQL VÀO… CHỌN Ví dụ

  4. Thiết kế cơ sở dữ liệu

  5. Hiệu suất của sys.partitions