Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menonaktifkan Semua Batasan PERIKSA &Kunci Asing untuk Tabel di SQL Server (Contoh T-SQL)

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 untuk ConstraintTest 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki Msg 512 "Subquery mengembalikan lebih dari 1 nilai" di SQL Server

  2. Cara menambahkan Batasan Kunci Utama ke Kolom Identitas ke semua tabel di Database SQL Server - Tutorial SQL Server / TSQL Bagian 63

  3. Permintaan gagal dengan status HTTP 401:Tidak Sah DI SSRS

  4. TSQL - Tambahkan Kolom ke Semua Tabel di Database [ Contoh Kursor]

  5. Cara Mendokumentasikan Database SQL Server Anda