演進您的 Schema
在您的 Schema 中新增 Tag
模型
在本節中,您將演進您的 Prisma Schema,然後使用 prisma migrate dev
產生遷移並套用至您的資料庫。
為了本指南的目的,我們將對 Prisma Schema 進行以下變更
- 建立一個名為
Tag
的新模型,包含以下欄位id
:一個自動遞增的整數,將作為模型的主鍵name
:一個非空的String
posts
:一個隱式多對多關係欄位,連結到Post
模型
- 使用一個
tags
欄位更新Post
模型,該欄位具有一個隱式多對多關係欄位,連結到Tag
模型
一旦您對 Schema 進行了變更,您的 Schema 應類似於下方所示
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 Schema 變更套用至您的資料庫,請使用 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 Tag (
id SERIAL NOT NULL,
name VARCHAR(255) NOT NULL,
CONSTRAINT Tag_pkey PRIMARY KEY (id)
);
-- CreateTable
CREATE TABLE _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 _PostToTag ADD CONSTRAINT _PostToTag_A_fkey FOREIGN KEY (A) REFERENCES Post(id) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE _PostToTag ADD CONSTRAINT _PostToTag_B_fkey FOREIGN KEY (B) REFERENCES Tag(id) ON DELETE CASCADE ON UPDATE CASCADE;
恭喜,您剛使用 Prisma Migrate 演進了您的資料庫 🚀