Cita:
Empezado por mamcx
Yo uso un sistema muy simple.
Incrusto como una constante el archivo con las migraciones dentro del .exe, en este formato:
Código SQL [-]
--version: 2
DROP TRIGGER IF EXISTS visit_code_update_tg ON payment;
--version: 3
ALTER TABLE doc_codes
ADD COLUMN doc_code TEXT PRIMARY KEY DEFAULT generate_ulid() CHECK (not_empty(doc_code));
Eso lo comparo contra la version de la BD y simplemente es partir el archivo, chequear la version y recorrerlo.
|
Podrias compartir un poco mas sobre como haces la comparacion y el archivo con las constantes.?
En cuanto a la logica para el chequeo, se me ocurre en el source, del form principal, luego de crear los datos y conexion a bd.
Código Delphi
[-]IF tablafirebird.DBVERSION < VERACTUAL
then actualiza
else ejecuta el programa
Mi procedure Actualiza lo vengo haciendo asi
pero es un lio
Código Delphi
[-]If dbversion = 2 then Actaliza3;
If dbversion = 3 then Actaliza4;
If dbversion = x then Actalizax+1;
Cada procedure carga en un TFDQuery las sentencia SQL necesarias para actualizar a la version en cuestión.
Funciona, pero me parece que no es prolijo.