在我的应用程序中,我想创建一个默认的主键,该键必须以BL-
开头,其余9位字符必须是随机的。Schema
model myModel {
// try 1
id String @id @default(dbgenerated("BL-"))
// try 2
id String @id @default(dbgenerated("BL-" + substring(uuid(), 1, 8)))
has context menu
Compose
// other fields
}
Migrations
-- AlterTable
ALTER TABLE "businessLoanOffers" ALTER COLUMN "id" SET DEFAULT BLO;
ERROR
Database error code: 0A000
Database error:
ERROR: cannot use column reference in DEFAULT expression
DbError { severity: "ERROR", parsed_severity: Some(Error), code: SqlState(E0A000), message: "cannot use column reference in DEFAULT expression", detail: None, hint: None, position: None, where_: None, schema: None, table: None, column: None, datatype: None, constraint: None, file: Some("parse_expr.c"), line: Some(530), routine: Some("transformColumnRef") }
我的另一种可能的解决方法是使用JS
来创建我选择的primary-key
,但我想使用prisma
和postresql
来解决这个问题。
1条答案
按热度按时间gjmwrych1#
正如您所发现的,您不能将
dbgenerated()
用于您的用例,因为它仅限于数据库支持的默认表达式,并且不支持您尝试使用的自定义函数或串联。但是,您可以通过在应用程序代码中使用自定义函数来实现所需的主键格式,以便在创建新记录时生成键。
您可以使用此函数作为引用来创建随机主键