Maison > développement back-end > Golang > Remplissez les nouvelles colonnes avec les valeurs du code Go

Remplissez les nouvelles colonnes avec les valeurs du code Go

王林
Libérer: 2024-02-06 11:27:03
avant
951 Les gens l'ont consulté

使用 Go 代码中的值回填新列

Contenu de la question

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.


Bonne réponse


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 :

  1. Mettez à jour l'application pour gérer correctement les lignes des nouvelles colonnes avec des valeurs marquées avant l'horodatage 123.
  2. Ajoutez une nouvelle colonne avec une contrainte non nulle et une valeur de balise par défaut lors de la migration.
  3. Exécutez le programme go pour mettre à jour la valeur sentinelle de la ligne avant l'horodatage 123 à la valeur appropriée.

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal