Bagaimana saya bisa memodifikasi tipe pada tabel yang memiliki indeks di atasnya? Saya mencoba untuk melakukan perubahan kolom pada tabel kosong untuk memodifikasi jenis dari tanggal waktu ke varchar (15) dan mendapat kesalahan mengatakan bahwa itu memiliki ketergantungan pada kolom (yang ternyata merupakan indeks).
Saya dapat dengan mudah menyiasatinya secara lokal dengan mengeklik kanan indeks dan membuat skrip drop, tetapi saya harus meluncurkannya di server lain di mana saya tidak akan memiliki akses ke nama indeks.
Apakah ada cara saya bisa membuat skrip yang akan menjatuhkan indeks apa pun, biarkan saya membuat perubahan tipe data pada kolom lalu membaca indeks? Terima kasih!
sumber
Untuk mengubah kolom apa pun, pertama Anda harus menjatuhkan indeks atau kendala lain yang mengandung kolom itu, dan setelah membuat indeks / kendala lagi. Tetapi tugas ini harus dilakukan oleh DBA karena setiap penurunan pada indeks atau kendala akan mempengaruhi di satu sisi data yang diminta - sementara indeks dijatuhkan, dan di sisi lain menempatkan penyumbatan di seluruh tabel untuk saat indeks dikembalikan. dibuat. Anda harus memastikan pengguna akan menyadari pemeliharaan ini kecil atau besar (tergantung pada ukuran tabel). Semoga berhasil!
Namun pembuatan Indeks dapat dilakukan dengan opsi Online yang kurang memblokir.
sumber
Jika Anda menjatuhkan indeks terlebih dahulu, Anda tidak akan dapat membacanya lagi, kecuali jika indeks dibuat kembali. Apa yang dapat Anda lakukan untuk menonaktifkan penegakan batasan.
Setelah skrip ini dijalankan, kendala tidak akan ditegakkan, dan Anda dapat memasukkan data tanpa khawatir tentang pemeriksaan kendala. Anda bisa mengubah tabel lagi, untuk mengaktifkan kembali kendala.
Setiap pelanggaran sebelumnya tidak akan diperiksa atau diperbaiki, tetapi setiap entri setelah kendala diberlakukan, akan diperiksa.
sumber
Ada 2 kesalahan dalam jawaban Niko (2 kondisi object_id hilang). Dan tidak perlu
group by
:sumber