Ver Mensaje Individual
  #11  
Antiguo 15-11-2022
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Reputación: 20
amadis Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
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;
// asi tengo tantas lineas If ejecutando procedures como versiones

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.
Responder Con Cita