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

Cara Mengembalikan Semua Batasan CHECK yang Tidak Tepercaya di SQL Server (Contoh T-SQL)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penginstalan dan Konfigurasi SQL Server Log Pengiriman &Pemulihan Bencana -4

  2. Tugas SSIS untuk impor jumlah kolom yang tidak konsisten?

  3. Cara mengatur opsi maxrecursion untuk CTE di dalam Fungsi Bernilai-Tabel

  4. sisipan massal pyodbc dasar

  5. Perbarui beberapa kolom dalam SQL