prisma编写数据表教程

prisma编写数据表

在prisma中,需要在Prisma Schenma文件中定义数据模型,即model。这些model会反映到数据库中的表。在prisma中,每一个model都对应这数据库里的一个表。 如:

ts 复制代码
model User {
  id        Int      @id @default(autoincrement())
  name      String
  email     String   @unique
  posts     Post[]
}

model的写法和class很类似,在model的内部,每一行分为三部分:

  • 字段名:id
  • 类型:Int
  • 装饰器:@id

字段名

就是User表中的字段,如id、name

类型

在Prisma里提供了其中类型

  • 数值类型:
    • Int 32位整数
    • BigInt 64位整数
    • Float 浮点数
    • Decimal 高精度浮点数
  • 字符串类型:
    • String 文本字符串
  • 布尔类型:
    • Boolean 布尔值
  • 日期类型:
    • DateTime 日期和时间,储存ISO 8601格式的字符串
  • 字节类型:
    • Bytes 存储二进制数据,如文件或图像数据
  • 枚举类型:
    • Enum 自定义类型,可定义一组特殊的字符串值
  • JSON类型:
    • Json 存储JSON格式数据,可以包括数组、对象等

装饰器

prisma有8种常见的字段装饰器:

  • @id:将字段标记为主键,主键必须唯一,通常与@unique一起使用
  • @defalut(value):为字段指定默认值,其中的value可以是静态值,如默认为0@defalut(0)。也可以是特定函数:
    • @defalut(autoincrement()):默认递增,通常与主键一起搭配,写成@id @defalut(autoincrement())
    • @defalut(now()):将当前时间戳作为默认值
  • @updatedAt:每当记录更新时,自动将这个字段的值设置为当前时间戳
  • @unique:字段值在表中唯一,保证数据的唯一性。例如用户账号应当用@unique装饰
  • @relation(fields: [], references: []):用于定义外键
  • @map(name):将model的字段映射到其他数据库的字段
  • @db(name):指定字段在数据库中的名称,起别名
  • @ignore:忽略该字段,该字段不会被包含在任何数据库操作中

看到这里,你可以会疑惑,数据库表常用的非空约束呢?其实这个约束时通过可选操作符?实现的。 在model里定义的字段,默认都是非空的。如果要某个字段可以接收null值,需要在字段类型后添加问号?,如用户年龄应当是可选的:

ts 复制代码
model User {
  id        Int      @id @default(autoincrement())
  name      String
  email     String   @unique
  posts     Post[]
  age       Int?
}
相关推荐
ZhengEnCi4 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
王中阳Go5 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
程序猿DD5 小时前
OctaFuse Gateway 2.18.0:MCP 接入支持 OAuth,供应商粘性绑定可视化管理
后端
ZhengEnCi6 小时前
Agent 规则管理:让 Memory 做索引、让 Skill 存规则——上下文上限实测与分工方案
后端
nice_lcj5207 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
骑着蜗牛撵大象3277 小时前
2026 后端 AI 工程化:Spring AI 管调用、MCP 管工具、Agent 内嵌管自治
java·人工智能·后端·spring·ai·可观测性·mcp
摸爬滚打的小李8 小时前
Spring XML + WAR + Tomcat 项目启动
后端
IT_陈寒9 小时前
SpringBoot自动配置的坑,这次终于爬出来了
前端·人工智能·后端
RainbowFish9 小时前
# RAG 与智能体记忆:从原理到工程实践 > 一篇给学习者的总结。
后端
苏三说技术10 小时前
为什么越来越多人用Arthas 4 ?
后端