Saat Anda membuat tabel baru di hook_schema()
, haruskah tabel itu ditambahkan hook_update_N()
juga? Atau ada beberapa trik, atau sesuatu yang saya lewatkan, agar pembaruan databae secara otomatis menambahkan tabel?
Dokumentasi hook_update_N () tidak menjelaskan apa-apa tentang memperkenalkan tabel baru, sedangkan dokumentasihook_schema()
mengatakan:
Tabel yang dideklarasikan oleh kait ini akan secara otomatis dibuat ketika modul pertama kali diaktifkan , dan dihapus ketika modul dihapus instalasinya.
(Sorot adalah milikku)
Dan jika demikian, cara terbaik menghindari duplikasi definisi skema untuk tabel baru di hook_update_N () dan hook_schema (). Cukup mengacu pada skema sebagai berikut:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Tampaknya berfungsi, tetapi saat mengganti tabel lagi, akan gagal jika pengguna menjalankan pembaruan dan menjalankan dua atau lebih hook_update_N (). Setelah semua: hook_update_N pertama kemudian akan menginstal database yang benar dan hook_update_M kedua () akan mencoba untuk menambah / mengubah / mengubah kolom yang sudah terbaru.
Bagaimana Anda menangani ini?