Jika Anda perlu mengembalikan daftar semua CHECK
kendala yang telah dinonaktifkan dalam database SQL Server, Anda dapat menjalankan kode T-SQL di bawah ini.
Contoh 1 – Return Only Disabled CHECK Batasan
Kueri ini hanya mengembalikan CHECK
. yang dinonaktifkan kendala dalam database saat ini. Ini mengembalikan nama kendala, nama tabel yang diterapkan, dan definisi kendala.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Hasil:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Ini menanyakan sys.check_constraints
tampilan sistem. Kami tahu ini hanya mengembalikan batasan yang dinonaktifkan karena WHERE
klausa hanya menentukan baris yang memiliki is_disabled
kolom disetel ke 1
.
Jika Anda ingin mengembalikan semua diaktifkan CHECK
kendala, cukup ubah 1
ke 0
.
Contoh 2 – Mengembalikan Semua Batasan CHECK
Kueri berikut mengembalikan semua CHECK
batasan untuk database saat ini (bukan hanya yang dinonaktifkan). Kali ini saya mengembalikan is_disabled
kolom untuk menunjukkan dari mana kueri sebelumnya mendapatkan nilainya:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Hasil:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Saya juga menyertakan is_not_trusted
kolom dalam kueri ini. Sebaiknya perhatikan nilai ini, karena batasan dapat tetap tidak dipercaya bahkan setelah diaktifkan kembali. Untuk diskusi mendetail (dan contoh) dari flag ini, lihat Apa yang Harus Anda Ketahui tentang WITH NOCHECK saat Mengaktifkan Batasan CHECK di SQL Server.