Anda dapat menggunakan kode di bawah ini untuk menonaktifkan semua CHECK
dan batasan kunci asing untuk tabel tertentu di SQL Server.
Ganti saja TableName
dengan nama tabel yang berlaku.
ALTER TABLE TableName NOCHECK CONSTRAINT ALL
Di bawah ini adalah contoh di mana saya melakukan ini dan kemudian memeriksa hasilnya.
Contoh 1 – Tinjau Batasan
Pertama, saya akan melihat sekilas CHECK
saat ini dan batasan kunci asing dalam database, untuk melihat apakah mereka diaktifkan atau dinonaktifkan.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', nama AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), nama, is_disabled, is_not_trustedFROM sys.check Hasil:+----------------+-------+----------- ----+------------------+| Tabel | Batasan | is_disable | is_not_trusted ||----------------+-------+------------ ---+------------------|| Uji Kendala | chkHarga | 0 | 0 || Uji Kendala | chkValidEndDate | 0 | 0 || Uji Kendala | chkTeamSize | 0 | 0 || Pekerjaan | chkJobTitle | 0 | 0 |+----------------+-------+------------ ---+------------------+Jadi saat ini ada empat
CHECK
batasan dalam database, tiga di antaranya untukConstraintTest
tabel.Kita dapat melihat bahwa semua batasan diaktifkan karena is_disabled disetel ke 0 .
Contoh 2 – Nonaktifkan Batasan
Sekarang saya akan menonaktifkan semua batasan untuk
ConstraintTest
tabel:ALTER TABLE ConstraintTest NOCHECK CONSTRAINT ALL;Contoh 3 – Periksa Hasilnya
Sekarang saya menjalankan kueri yang sama dari contoh pertama untuk melihat hasilnya.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', nama AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), nama, is_disabled, is_not_trustedFROM sys.check Hasil:+----------------+-------+----------- ----+------------------+| Tabel | Batasan | is_disable | is_not_trusted ||----------------+-------+------------ ---+------------------|| Uji Kendala | chkHarga | 1 | 1 || Uji Kendala | chkValidEndDate | 1 | 1 || Uji Kendala | chkTeamSize | 1 | 1 || Pekerjaan | chkJobTitle | 0 | 0 |+----------------+-------+------------ ---+------------------+Seperti yang diharapkan, ketiga batasan untuk ConstraintTest tabel telah dinonaktifkan (karena is_disabled kolom disetel ke 1 untuk kendala tersebut).
Perhatikan bahwa is_not_trusted kolom juga disetel ke 1 . Ini adalah pertimbangan penting, terutama jika Anda bermaksud untuk mengaktifkan kembali batasan yang dinonaktifkan.
Lihat Apa yang Harus Anda Ketahui tentang DENGAN NOCHECK saat Mengaktifkan Batasan PERIKSA di SQL Server untuk informasi tentang cara memulihkan kepercayaan saat mengaktifkan kembali batasan Anda. Informasi dalam artikel itu juga berlaku untuk kunci asing.
Nonaktifkan Kendala Satu per satu
Jika Anda tidak ingin menonaktifkan semua batasan dalam tabel, Anda dapat menonaktifkannya satu per satu. Lihat Cara Menonaktifkan Batasan CHECK di SQL Server dan Cara Menonaktifkan Kunci Asing di SQL Server.
Aktifkan kembali Batasan
Jika Anda perlu mengaktifkan kembali semua batasan untuk tabel, lihat Cara Mengaktifkan SEMUA PERIKSA dan Batasan Kunci Asing untuk Tabel.
Jika Anda perlu mengaktifkannya kembali satu per satu, lihat Cara Mengaktifkan Batasan CHECK di SQL Server dan dan Cara Mengaktifkan Kunci Asing di SQL Server.