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

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

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan PIVOT dinamis SQL Server?

  2. Pilih grup baris yang cocok dengan semua item dalam daftar

  3. Peregangan Database di SQL Server 2016 RTM

  4. Bagaimana cara memilih 5 baris terakhir dalam tabel tanpa menyortir?

  5. sql geografi ke dbgeografi?