Jika Anda perlu mengembalikan daftar semua CHECK
yang tidak dipercaya kendala dalam database SQL Server, Anda dapat menjalankan kode T-SQL di bawah ini.
Dengan “tidak dipercaya”, saya mengacu pada batasan yang memiliki is_not_trusted
bendera disetel ke 1
.
Contoh 1 – Hanya Kembalikan Batasan CHECK yang Tidak Tepercaya
Kueri ini hanya mengembalikan CHECK
yang tidak dipercaya batasan dalam database saat ini.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, definition FROM sys.check_constraints WHERE is_not_trusted = 1;
Hasil:
+----------------+-----------------+---------------+-------------------------------+ | Table | Constraint | is_disabled | definition | |----------------+-----------------+---------------+-------------------------------| | ConstraintTest | chkPrice | 0 | ([Price]>(0)) | | ConstraintTest | chkValidEndDate | 1 | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | 1 | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+---------------+-------------------------------+
Kueri ini mengembalikan nama batasan, nama tabel yang diterapkan, dan definisi batasan.
Itu juga mengembalikan is_disabled
kolom. Ini memberi tahu kita apakah batasan saat ini diaktifkan atau dinonaktifkan. Ini penting untuk diketahui, karena batasan dapat diaktifkan tetapi tidak dipercaya pada saat yang bersamaan.
Ini menanyakan sys.check_constraints
tampilan sistem. Kami tahu ini hanya mengembalikan batasan yang tidak dipercaya karena WHERE
klausa hanya menentukan baris yang memiliki is_not_trusted
kolom disetel ke 1
.
Jika Anda ingin mengembalikan semua tepercaya CHECK
kendala, cukup ubah 1
ke 0
.
Contoh 2 – Mengembalikan Status Kepercayaan
Ini dia lagi, tapi kali ini saya menukar definition
kolom dengan is_not_trusted
kolom:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints WHERE is_not_trusted = 1;
Hasil:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Mungkin berlebihan untuk menyertakan is_not_trusted
kolom, tetapi setidaknya ini membantu untuk menegaskan kembali fakta bahwa batasan yang diaktifkan masih dapat tidak dipercaya.
Contoh 3 – Mengembalikan Semua Batasan CHECK
Kueri berikut mengembalikan semua CHECK
batasan untuk database saat ini (bukan hanya yang tidak dipercaya):
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 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Untuk diskusi mendetail (dan contoh) dari is_not_trusted
flag, lihat Apa yang Harus Anda Ketahui tentang WITH NOCHECK saat Mengaktifkan Batasan CHECK di SQL Server.