การสร้าง Schema ของ Database ใหม่
บทนี้จะแนะนำวิธีเพิ่ม/แก้ไข Database Schema ด้วย Prisma อย่างถูกต้อง
⚠️ กฎสำคัญ
ใช้
npx prisma migrate devสำหรับทุกการเปลี่ยนแปลง schemaห้ามใช้
npx prisma db pushเพราะอาจทำให้ข้อมูลหาย และไม่มี migration history
ขั้นตอนการสร้าง Schema ใหม่
1. แก้ไข schema.prisma
เปิดไฟล์ prisma/schema.prisma แล้วเพิ่ม model ใหม่:
// prisma/schema.prisma
model Post {
id String @id @default(cuid())
title String
content String?
published Boolean @default(false)
authorId String
author User @relation(fields: [authorId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
2. รัน migrate dev
npx prisma migrate dev --name add_post_model
สิ่งที่เกิดขึ้น:
- Prisma เปรียบเทียบ schema กับ database
- สร้างไฟล์ SQL ใน
prisma/migrations/ - รัน SQL เพื่ออัพเดท database
- สร้าง Prisma Client ใหม่ (TypeScript types)
3. ตรวจสอบ Migration File
หลังจากรัน คุณจะเห็นไฟล์ใหม่:
prisma/migrations/
└── 20260123_add_post_model/
└── migration.sql
ตัวอย่างเนื้อหา migration.sql:
-- CreateTable
CREATE TABLE "Post" (
"id" TEXT NOT NULL,
"title" TEXT NOT NULL,
"content" TEXT,
"published" BOOLEAN NOT NULL DEFAULT false,
"authorId" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Post_pkey" PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "Post" ADD CONSTRAINT "Post_authorId_fkey"
FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
ข้อดีของ migrate dev
| db push | migrate dev |
|---|---|
| ❌ ไม่มี history | ✅ มี migration files (git-trackable) |
| ❌ อาจลบ column ทิ้ง | ✅ ตรวจสอบ SQL ก่อน commit ได้ |
| ❌ ไม่ sync กับ production | ✅ production ได้ SQL เดียวกัน 100% |
สรุป
| ขั้นตอน | Command |
|---|---|
| 1. แก้ไข schema | Edit prisma/schema.prisma |
| 2. สร้าง migration | npx prisma migrate dev --name <name> |
| 3. ตรวจสอบ SQL | ดูไฟล์ใน prisma/migrations/ |