Saat menguji beberapa skrip migrasi dengan salinan data produksi (skrip berjalan baik dengan data pengembangan) saya menemukan situasi yang aneh. CONSTRAINT telah berubah jadi saya mengeluarkan perintah DROP + ADD:
ALTER TABLE A_DUP_CALLE
DROP CONSTRAINT A_DUP_CALLE_UK1;
ALTER TABLE A_DUP_CALLE
ADD CONSTRAINT A_DUP_CALLE_UK1 UNIQUE (
CONTROL_ID,
CALLE_AYTO_DUPL
)
ENABLE;
Perintah DROP bekerja dengan baik tetapi ADD satu gagal. Sekarang, saya menjadi lingkaran setan. Saya tidak dapat menghapus batasan karena tidak ada (penurunan awal berfungsi seperti yang diharapkan):
ORA-02443: Tidak dapat menjatuhkan batasan - tidak ada batasan
Dan saya tidak dapat membuatnya karena namanya sudah ada:
ORA-00955: nama sudah digunakan oleh objek yang ada
Saya mengetik A_DUP_CALLE_UK1
di kotak pencarian SQL Developer dan ... ini dia! Pemilik, nama tabel, tablescape ... semuanya cocok: itu bukan objek yang berbeda dengan nama yang sama, itu adalah kendala asli saya. Tabel muncul dalam detail kendala tetapi kendala tidak muncul dalam detail tabel.
Pertanyaan saya:
- Apa penjelasan untuk ini?
- Bagaimana saya bisa memastikan itu tidak akan terjadi ketika saya melakukan peningkatan nyata di server langsung?
(Server 10g XE, saya tidak punya cukup reputasi untuk membuat tag.)