Quelle est la meilleure façon de remplir une nouvelle colonne avec des valeurs du code de l'application Go ? Idéalement, je parcourirais chaque ligne, appellerais le code Go et utiliserais la valeur de retour comme valeur de colonne. Le code Go est avec état. Autrement dit, il agit sur la structure des données qui est mise à jour à chaque nouvelle ligne et calcule une valeur basée sur ces informations.
Ce que je pense faire, c'est effectuer une migration, ajouter les nouvelles colonnes comme nullables, puis exécuter un programme Go après la migration pour remplir les lignes. Mais il serait préférable que tout cela puisse être fait en une seule migration, d'autant plus que la colonne ne doit pas être NULL en premier lieu.
Nous utilisons Flyway pour la migration. Notre base de données est Postgres 11.5.
Il n'est pas possible de remplir de nouvelles colonnes de cette manière via la migration - c'est-à-dire en une seule étape au sein d'une transaction. Au lieu de cela, vous avez besoin de quelque chose comme :
Cette méthode nécessite des modifications de l'application mais ne nécessite pas de fenêtre de maintenance. Cela garantit également que les migrations n'échouent pas parce que les contraintes ne sont pas satisfaites au moment de la migration.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!