Apakah cara terbaik untuk mengisi semula lajur baharu dengan nilai daripada kod aplikasi Go? Sebaik-baiknya, saya akan mengulangi setiap baris, memanggil kod Go, dan menggunakan nilai pulangan sebagai nilai lajur. Kod Go adalah stateful. Iaitu, ia bertindak pada struktur data yang dikemas kini pada setiap baris baharu dan mengira nilai berdasarkan maklumat ini.
Apa yang saya fikirkan untuk lakukan ialah melakukan migrasi, menambahkan lajur baharu sebagai boleh batal, dan kemudian menjalankan program Go selepas pemindahan untuk mengisi semula baris. Tetapi adalah lebih baik jika semua ini boleh dilakukan dalam satu penghijrahan, terutamanya kerana lajur tidak sepatutnya NULL di tempat pertama.
Kami menggunakan Flyway untuk migrasi. Pangkalan data kami ialah Postgres 11.5.
Tidak mungkin mengisi lajur baharu dengan cara ini melalui penghijrahan - iaitu dilakukan dalam satu langkah dalam transaksi. Sebaliknya, anda memerlukan sesuatu seperti:
Kaedah ini memerlukan perubahan pada aplikasi tetapi tidak memerlukan tetingkap penyelenggaraan. Ia juga memastikan migrasi tidak gagal kerana kekangan tidak dipenuhi pada masa migrasi.
Atas ialah kandungan terperinci Isi semula lajur baharu dengan nilai daripada kod Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!