본문으로 건너뛰기
제품 -> ERD가격문서블로그로그인EnglishERD 시작하기

Migration SQL

Ainecto는 다이어그램의 두 버전을 비교해 migration SQL을 자동 생성할 수 있습니다. ALTER TABLE 문을 손으로 작성하는 대신 스키마 스냅샷 diff를 기반으로 DDL을 만들 수 있습니다.


동작 방식

  1. History 사이드바 패널을 엽니다.
  2. 비교할 두 버전을 선택합니다. 하나는 source(이전), 하나는 target(이후)입니다.
  3. Compare Versions를 클릭해 side-by-side diff를 확인합니다.
  4. Generate Migration SQL 버튼을 클릭합니다.
  5. target dialect를 선택합니다.
  6. 생성된 SQL을 검토합니다.
  7. Copy 버튼으로 clipboard에 복사합니다.

Migration SQL은 source schema를 target schema로 바꾸는 데 필요한 최소 DDL statement 집합을 표현합니다.


지원 작업

Generator는 다음 변경을 감지하고 SQL을 만듭니다.

Tables

변경생성 SQL
테이블 추가CREATE TABLE
테이블 삭제DROP TABLE
테이블 이름 변경ALTER TABLE ... RENAME

Columns

변경생성 SQL
컬럼 추가ALTER TABLE ... ADD COLUMN
컬럼 삭제ALTER TABLE ... DROP COLUMN
컬럼 이름 변경ALTER TABLE ... RENAME COLUMN
타입 변경ALTER TABLE ... ALTER COLUMN TYPE 등 dialect별 구문
nullable 변경SET NOT NULL / DROP NOT NULL
기본값 변경SET DEFAULT / DROP DEFAULT

Relationships and indexes

변경생성 SQL
FK 추가/삭제ADD CONSTRAINT / DROP CONSTRAINT
index 추가/삭제CREATE INDEX / DROP INDEX
unique 변경unique index 또는 constraint 변경

지원 dialect

  • MySQL / MariaDB
  • PostgreSQL
  • Oracle
  • SQL Server

각 dialect는 identifier quoting, auto-increment syntax, 타입 변경 syntax가 다릅니다. Ainecto는 선택한 dialect에 맞춰 출력합니다.


예시

-- Migration from v3 to v5

ALTER TABLE "orders" ADD COLUMN "discount_code" VARCHAR(50);

ALTER TABLE "orders" DROP COLUMN "legacy_status";

ALTER TABLE "products"
ADD CONSTRAINT "fk_products_category"
FOREIGN KEY ("category_id") REFERENCES "categories" ("id");

CREATE INDEX "idx_orders_created_at" ON "orders" ("created_at");

  • 큰 변경 전에는 버전을 저장하세요. migration 도구는 비교할 스냅샷이 최소 두 개 필요합니다.
  • 실행 전 반드시 검토하고 staging database에서 테스트하세요.
  • copy 버튼을 사용하면 전체 SQL을 database client나 migration 파일에 바로 붙여 넣을 수 있습니다.
  • 버전 기록과 함께 쓰면 스키마 변경 타임라인을 명확하게 관리할 수 있습니다.