Expand description
Schema Sync — 自动结构同步
§概述
比较实体定义与 DB 现有表结构差异,自动生成并执行 DDL(CREATE/ALTER TABLE)。 禁止破坏性 DDL(ADR-v2.1.0-004):不生成 DROP TABLE / DROP COLUMN。
§工作流
introspect(conn)→ 读取 DB 现有表结构diff(entity, db)→ 计算 6 类变更- 检查破坏性变更 → 若有则返回
Err(DestructiveChangeDetected) generate(diff)→ 生成 DDL 语句sync(conn)→ 事务内执行 DDL
§示例
ⓘ
use sz_orm_core::schema_sync::{SchemaSync, TableDef, ColumnDef};
let entity_tables = vec![
TableDef::new("users", vec![
ColumnDef::new("id", "BIGINT", false, true, None),
ColumnDef::new("email", "VARCHAR(255)", false, false, None),
]),
];
let sync = SchemaSync::new(entity_tables);
let ddl = sync.sync_dry_run(&mut conn).await?;
// ddl: ["ALTER TABLE users ADD COLUMN email VARCHAR(255)"]Structs§
- Column
Def - 列定义
- Destructive
Sync Result - 破坏性同步结果(v2.2.0 B-2)
- Mssql
DdlGenerator - MSSQL DDL 生成器
- MySql
DdlGenerator - MySQL DDL 生成器
- Oracle
DdlGenerator - Oracle DDL 生成器
- PgDdl
Generator - PostgreSQL DDL 生成器
- Schema
Diff - Schema 差异
- Schema
Sync - Schema Sync 协调器
- Sqlite
DdlGenerator - SQLite DDL 生成器
- Sync
Result - 同步结果
- Table
Def - 表定义
Enums§
- Confirm
- 破坏性同步确认枚举(v2.2.0 B-2)
Traits§
- Data
Migration Hook - 数据迁移钩子 trait(v2.2.0 B-2)
- DdlGenerator
- DDL 生成器 trait
Functions§
- diff
- 比较实体定义与 DB 现有表结构,输出 6 类变更