Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Menggunakan beberapa bidang untuk kunci unik di Prisma

Saya mengalami masalah dengan Prisma yang membuat saya kehilangan sedikit waktu, jadi saya akan menulis bagaimana saya menyelesaikannya.

Model tidak memiliki id bidang ditandai sebagai @id jadi saya menambahkan @@unique() untuk mengatakan user dan tweet , bersama-sama, mendefinisikan unique membatasi.

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

Ini berarti kami tidak boleh memiliki lebih dari 1 entri (user, tweet) yang sama entri.

Saat saya mencoba menghapus entri dengan

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

Saya mengalami pesan kesalahan:

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
}

Yang harus saya lakukan adalah berubah

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

untuk

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

Dengan kata lain, menggabungkan bidang unik yang menggabungkannya dengan garis bawah.

Dalam retrospeksi, pesan kesalahan semacam menjelaskan hal ini, tetapi saya tidak mengerti.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Model Database Dari Awal

  2. APPEND_ONLY_STORAGE_INSERT_POINT Kait

  3. Cara Meletakkan Tabel di SQL

  4. Easysoft Rilis ODBC-ODBC Bridge untuk Windows 10

  5. Menyelami NoSQL:Daftar lengkap database NoSQL