Pertimbangkan untuk membuat tabel baru dengan skema yang sama ditambah kolom versi baris, dan tambahkan tampilan di atas kedua tabel yang melakukan gabungan semua. Mintalah orang lain menggunakan tampilan, dan menulis alih-alih pemicu terhadap tabel & tampilan yang mendasarinya.
Sisipan harus dikirim ke tabel baru, pembaruan harus memindahkan data ke tabel baru, dan penghapusan harus diterapkan ke kedua tabel.
Kemudian lakukan gerakan batch di latar belakang, pindahkan sebanyak mungkin catatan sekaligus ke meja baru. Anda masih dapat memiliki masalah konkurensi saat ini sedang berlangsung, dan beberapa rencana eksekusi craptacular, tetapi ini memungkinkan Anda tetap online saat gerakan sedang berlangsung.
Idealnya, Anda memulai proses pada hari Jumat sore untuk meminimalkan efek pada pengguna akhir, dan mencoba menyelesaikannya sebelum Senin pagi. Setelah siap, Anda dapat mengubah tampilan menjadi hanya tabel baru, dan rencana eksekusi craptacular hilang. Idealnya.
Untuk menghindari pemicu pemicu saat data dimigrasi dalam kumpulan, lihat jumlah baris dalam tabel yang dihapus / dimasukkan dalam pemicu, dan lewati aktivitas jika mendekati jumlah baris dalam kumpulan Anda.
Pada akhirnya, Michael memutuskan untuk melewatkan tampilan (dan tidak menghapus dari tabel asli) untuk mendapatkan rencana yang lebih stabil. Pertukaran itu pada dasarnya memegang dua salinan tabel. Dia mengubahnya menjadi serangkaian posting blog .
Jika yang
TIMESTAMP
Anda tambahkan adalahNULLABLE
:VARBINARY(8)
kolomSetelah itu dihuni, di belakang laporan SQL kembali,
DROP
yangVARBINARY(8)
kolom Anda hanya menambahkan dan penduduknya, dan tambahkanTIMESTAMP NULL
kolom.Jika yang
TIMESTAMP
Anda tambahkan adalahNOT NULLABLE
:BINARY(8)
kolomSetelah itu dihuni, di belakang laporan SQL kembali,
DROP
yangBINARY(8)
kolom Anda hanya ditambahkan dan penduduknya danADD THE TIMESTAMP NOT NULL
kolom.sumber