prisma:为啥我不能将“null”设置为可空列的默认值?

Posted

技术标签:

【中文标题】prisma:为啥我不能将“null”设置为可空列的默认值?【英文标题】:prisma: Why can't I set "null" as default value for nullable columns?prisma:为什么我不能将“null”设置为可空列的默认值? 【发布时间】:2021-10-12 13:18:50 【问题描述】:
model Comment 
  id        Int        @id @default(autoincrement())
  reply     Comment?   @relation(fields: [replyId], references: [id], onDelete: SetNull)
  replyId   Int?       @default(null)
  comment   String

这里replyreplyId 都可以为空,但是当我尝试迁移时出现此错误:

error: Error parsing attribute "@default": Expected a numeric value, but received literal value "Null".
  -->  schema.prisma:70
   |
69 |   reply     Comment? @relation(fields: [replyId], references: [id], onDelete: SetNull)
70 |   replyId   Int?     @default(null)
   |

谁能解释一下这个问题?

【问题讨论】:

【参考方案1】:

您实际上不需要为可选字段指定空默认值。如果您未指定 Comment 关系或为记录显式提供 replyId 值,则 replyId 的值自动为空。对于不充当外键的可选字段也是如此。

所以,你想要的行为会自动出现,不需要定义@default(null)

【讨论】:

谢谢。你是唯一回答我的 Prisma 问题的人:)。我以为因为replyId是一个整数,所以它的默认值是0。 可选字段,无论类型如何,都可以为空,默认为空。并乐于提供帮助:D 是的,“诠释?”实际上意味着,如果没有提供任何内容,则设置为 null。

以上是关于prisma:为啥我不能将“null”设置为可空列的默认值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 oracle 中使可空列不为空

可空列的行为并非如此

当所述列的值为 NULL 时,我在可空列上使用 JSON_extract 函数的 where 语句得到确认?

将 null 设置为 PreparedStatement

检查可空列是不是稀疏或不在 SQL Server 中查询

为啥 C# 6.0 在使用 Null 传播运算符时不允许设置非 null 可空结构的属性?