演进您的架构
将一个 `Tag` 模型添加到您的架构
在本节中,您将演进您的 Prisma 架构,然后使用 prisma migrate dev
生成并应用迁移到您的数据库。
出于本指南的目的,我们将对 Prisma 架构进行以下更改
- 创建一个名为 `Tag` 的新模型,包含以下字段
id
:一个自增整数,将作为模型的主键name
:一个非空的 `String`posts
:一个隐式多对多关系字段,链接到 `Post` 模型
- 更新 `Post` 模型,添加一个 `tags` 字段,包含一个隐式多对多关系字段,链接到 `Tag` 模型
完成架构更改后,您的架构应与以下示例类似
prisma/schema.prisma
model Post {
id Int @id @default(autoincrement())
title String @db.VarChar(255)
createdAt DateTime @default(now()) @db.Timestamp(6)
content String?
published Boolean @default(false)
authorId Int
user User @relation(fields: [authorId], references: [id])
tags Tag[]
}
model Profile {
id Int @id @default(autoincrement())
bio String?
userId Int @unique
user User @relation(fields: [userId], references: [id])
}
model User {
id Int @id @default(autoincrement())
name String? @db.VarChar(255)
email String @unique @db.VarChar(255)
post Post[]
profile Profile?
}
model Tag {
id Int @id @default(autoincrement())
name String
posts Post[]
}
要将您的 Prisma 架构更改应用到您的数据库,请使用 `prisma migrate dev` CLI 命令
npx prisma migrate dev --name tags-model
此命令将
- 为迁移创建一个新的 SQL 迁移文件
- 将生成的 SQL 迁移应用到数据库
- 重新生成 Prisma Client
以下迁移将被生成并保存在您的 `prisma/migrations` 文件夹中
prisma/migrations/TIMESTAMP_tags_model.sql
-- CreateTable
CREATE TABLE [dbo].[Tag] (
[id] SERIAL NOT NULL,
[name] VARCHAR(255) NOT NULL,
CONSTRAINT [Tag_pkey] PRIMARY KEY ([id])
);
-- CreateTable
CREATE TABLE [dbo].[_PostToTag] (
[A] INTEGER NOT NULL,
[B] INTEGER NOT NULL
);
-- CreateIndex
CREATE UNIQUE INDEX [_PostToTag_AB_unique] ON _PostToTag([A], [B]);
-- CreateIndex
CREATE INDEX [_PostToTag_B_index] ON [_PostToTag]([B]);
-- AddForeignKey
ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_A_fkey] FOREIGN KEY ([A]) REFERENCES [dbo].[Post]([id]) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_B_fkey] FOREIGN KEY ([B]) REFERENCES [dbo].[Tag]([id]) ON DELETE CASCADE ON UPDATE CASCADE;
恭喜,您刚刚使用 Prisma Migrate 演进您的数据库 🚀