【发布时间】:2021-06-30 21:21:35
【问题描述】:
我阅读了有关 prisma 作为 ORM 提供程序的信息,然后决定尝试一下。我目前在数据库查询方面的知识,尤其是 postrgres 方面的经验还不是很丰富,所以我遇到了需要一些帮助才能找到正确解决方案的情况。
让我们假设以下schema.prisma:
model languages {
language_id Int @id @default(autoincrement())
language_code String @db.VarChar
translations_categories translations_categories[]
}
model categories {
category_id Int @id @default(autoincrement())
category_name String @db.VarChar
translations_categories translations_categories[]
}
model translations_categories {
translation_id Int @id @default(autoincrement())
language_id Int
category_id Int
translation_value String @db.VarChar
categories categories @relation(fields: [category_id], references: [category_id])
language languages @relation(fields: [language_id], references: [language_id])
}
所以我尝试用一些 api 数据解决以下更新查询:
- 添加一个新类别并插入它是
category_name - 在
translations_categories中添加此类别的给定翻译(在此步骤中,提供的信息包含language_code,而不是language_id!)
请求正文包含以下字段:
{
id: 2
identifier: "TEST-1"
translations: {
de: "german",
en: "english",
fr: "france",
it: "italian"
}
}
出现了以下问题:
- 是否可以通过单个查询来实现此工作流程?
- 在插入
translation时,我认为提供的language_code可以单独使用,不是吗?
【问题讨论】:
-
我不太明白你在这里想要做什么。您能具体解释一下更新查询是什么吗?
-
没问题,我会给出更详细的解释!
-
所以更新查询应该执行以下步骤: - 更新或创建一个带有标识符的新类别(不是唯一的!) - 也添加相关的翻译(存储在单独的表中) - 语言fk 从翻译表中引用的翻译所以我的问题是:如果我没有语言的唯一 ID,只有语言代码,我如何创建或更新这些翻译并将相关语言放在单个翻译中。对于给定的翻译(如果已经存在),lanuage_id 和 category_id 的组合将是唯一的
标签: sql postgresql prisma