Prisma → SQL: 스키마 설명에서 DDL로
스키마를 꼭 SQL로 가져올 필요는 없습니다. 아래는 실제 변환입니다. 왼쪽이 Prisma 설명, 오른쪽이 편집기가 만들어 낸 결과입니다.
입력schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique @db.VarChar(255)
fullName String? @map("full_name")
createdAt DateTime @default(now()) @map("created_at")
orders Order[]
@@map("users")
}
model Order {
id Int @id @default(autoincrement())
userId Int @map("user_id")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
total Decimal @db.Decimal(12, 2)
placedAt DateTime @map("placed_at")
@@index([userId])
@@map("orders")
}결과schema.sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email varchar(255) NOT NULL UNIQUE,
full_name text,
created_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id integer NOT NULL,
total decimal(12, 2) NOT NULL,
placed_at timestamp(3) NOT NULL
);
ALTER TABLE orders ADD CONSTRAINT fk_orders_user_id FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE;
CREATE INDEX idx_orders_user_id ON orders (user_id);편집기 열기
스크립트는 브라우저에 남습니다. 해석도 생성도 사용자의 기기에서 이뤄지고 서버로는 아무것도 가지 않습니다.
무엇이 무엇이 되는지
| 원본에서 | SQL에서 |
|---|---|
@id @default(autoincrement()) | SERIAL PRIMARY KEY |
String @db.VarChar(255) | varchar(255) |
@unique | UNIQUE |
@map("full_name") | full_name |
@default(now()) | DEFAULT CURRENT_TIMESTAMP |
onDelete: Cascade | REFERENCES users (id) ON DELETE CASCADE |
@@map("users") | CREATE TABLE users |