Cum să creezi migrări re-executabile în Flyway Teams
In this tutorial, you'll learn about Cum să creezi migrări re. We cover key concepts, practical examples, and best practices.
Vei învăța cum să creezi și să gestionezi migrări re-executabile (repeatable) în Flyway Teams pentru views, stored procedures și functions care se actualizează automat la fiecare modificare.
Problema
View-urile și procedurile stocate se schimbă frecvent. Migrările obișnuite (V) rulează o singură dată. Pentru obiecte care trebuie actualizate la fiecare deploy, Flyway Teams oferă migrări repeatable (R) care se re-execută când conținutul se modifică.
Modul Greșit
-- V2__create_active_users_view.sql — migrare obișnuită
CREATE VIEW active_users AS
SELECT * FROM users WHERE status = 'active';
-- Când adaugi o coloană nouă, view-ul e învechit
-- Trebuie să creezi V3, V4... pentru fiecare modificare
-- V3__create_active_users_view_v2.sql
CREATE OR REPLACE VIEW active_users AS
SELECT id, name, email FROM users WHERE status = 'active';
Modul Corect
-- R__active_users_view.sql — migrare repeatable
CREATE OR REPLACE VIEW active_users AS
SELECT id, name, email, last_login
FROM users
WHERE status = 'active';
-- R__user_functions.sql — toate funcțiile într-un singur loc
CREATE OR REPLACE FUNCTION get_user_count()
RETURNS INTEGER AS $$
SELECT COUNT(*) FROM users;
$$ LANGUAGE SQL;
flyway migrate
Output:
Current version of schema "public": 2
Migrating schema "public" to version 2 - add users table
Successfully applied 1 migration (execution time 00:00.123s)
Repeatable migrations not applied — no change detected
După modificarea R__active_users_view.sql:
Repeatable migration R__active_users_view.sql updated
Successfully applied 1 repeatable migration
Pas cu Pas
1. Denumește corect fișierele
db/migration/
V1__create_users.sql
V2__add_orders.sql
R__active_users_view.sql
R__user_functions.sql
R__order_stats.sql
2. Scrie conținutul cu CREATE OR REPLACE
-- R__order_summary.sql
CREATE OR REPLACE VIEW order_summary AS
SELECT
u.name,
COUNT(o.id) as order_count,
SUM(o.total) as total_spent
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.name;
3. Rulează migrarea
flyway migrate
# Repeatable migrations se re-execută doar când checksum-ul se modifică
Sfaturi de Prevenție
- Plasează view-urile și funcțiile ca migrări repeatable, tabelele ca migrări versionate
- Folosește
CREATE OR REPLACEîn loc deCREATEîn migrările repeatable - Grupează funcții înrudite în aceleași fișiere R
- Verifică starea cu
flyway infopentru a vedea când s-a executat ultima dată o migrare R
Greșeli Comune
- Folosirea
CREATEîn loc deCREATE OR REPLACE— a doua rulare eșuează cu obiect deja existent - Migrări R care modifică tabele — repeatable nu track-uiesc coloanele adăugate; folosește V pentru DDL de tabele
- Dependențe între migrări R — Flyway nu garantează ordinea între migrări repeatable; separă-le
- Migrări R care expiră — dacă un view referențiază tabele care nu mai există, migrarea R eșuează
Întrebări Frecvente
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Flyway Teams pentru migrări re-executabile sigure.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro