簡體   English   中英

具有唯一一對多的 Prisma 模型

[英]Prisma Model with unique one to many

一個產品可以有不同的尺寸,所以我添加了一對多的關系。 但是每個產品只能有 1 個唯一尺寸,即在多對多尺寸中不應重復。 例如,產品 X 可以有尺寸 1、2、3,但如果用戶嘗試添加已經存在的尺寸 2,它應該會失敗(確實如此),但現在問題是在添加產品 Y 時,添加尺寸 1 失敗,因為它是獨一無二的,但每個變體應該是獨一無二的,而不是整體。 在對數據庫建模時執行此操作的任何方法,或者如果相同變體的大小已經存在,我必須添加手動檢查並拋出錯誤。

數據庫 - 使用 Prisma 的 Postgresql

您可以在 postgres 中使用多個字段創建唯一索引。 https://www.postgresqltutorial.com/postgresql-indexes/postgresql-unique-index/向下滾動多字段部分。

在不知道您現有的表結構的情況下,我不能自信地說這段代碼會起作用,但您會想要這樣的東西。

CREATE UNIQUE INDEX idx_products_size ON products(id, size);

在 Prisma 中,您可以像這樣對關系建模:

model Product {
  id          String        @id @default(uuid())
  name        String
  description String
  sizes       ProductSize[]
}

model ProductSize {
  id          String  @id @default(uuid())
  name        String
  description String
  product     Product @relation(fields: [productId], references: [id])
  productId   String

  @@unique([productId, name])
}

這包含兩個字段(productId 和名稱)組合的唯一索引。 因此,對於每個產品,只能有一個唯一的命名尺寸。 示例 - (productId - A, Size - 1), (productId - A, Size - 2)。 使用 (productId - A, Size - 1) 添加另一條記錄會引發錯誤,但 (productId - B, Size - 1) 將被允許。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM