Saya mencari cara untuk sementara waktu mematikan semua kendala DB (misalnya hubungan tabel).
Saya perlu menyalin (menggunakan INSERT) satu tabel DB ke DB lain. Saya tahu saya dapat mencapainya dengan menjalankan perintah dalam urutan yang benar (untuk tidak memutuskan hubungan).
Tetapi akan lebih mudah jika saya bisa mematikan memeriksa kendala untuk sementara waktu dan menyalakannya kembali setelah operasi selesai.
Apakah ini mungkin?
sql-server
dansql-server-2005
tag. Tautan yang saya berikan adalah untuk SQL Server, tetapi Anda dapat melakukan hal yang sama di Oracle - lihat di sini dan di sini . Anda juga dapat melakukannya di PostgreSQL .Jawaban:
Anda dapat menonaktifkan batasan FK dan PERIKSA
hanya dalam SQL 2005+. Lihat ALTER TABELatau
Kunci primer dan batasan unik tidak dapat dinonaktifkan, tetapi ini harus OK jika saya mengerti Anda dengan benar.
sumber
sumber
check check
yang banyak orang lupakan !!Dan, jika Anda ingin memverifikasi bahwa Anda belum memutuskan hubungan Anda dan memperkenalkan anak yatim, setelah Anda mempersenjatai ulang cek Anda, yaitu
atau
maka Anda dapat menjalankan kembali dan melakukan pembaruan terhadap kolom yang diperiksa seperti:
Dan setiap kesalahan pada saat itu akan disebabkan oleh kegagalan untuk memenuhi kendala.
sumber
Anda benar-benar dapat menonaktifkan semua batasan database dalam satu perintah SQL dan mengaktifkannya kembali memanggil perintah tunggal lainnya. Lihat:
Saya saat ini bekerja dengan SQL Server 2005 tetapi saya hampir yakin bahwa pendekatan ini bekerja dengan SQL 2000 juga
sumber
Menonaktifkan dan Mengaktifkan Semua Kunci Asing
lihat Menonaktifkan Batasan dan Pemicu dari Majalah MSDN
sumber