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 |