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

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

Jika Anda perlu mengembalikan daftar semua batasan kunci asing yang telah dinonaktifkan di database SQL Server, Anda dapat menjalankan kode T-SQL di bawah ini.

Contoh 1 – Hanya Kembalikan Batasan Kunci Asing yang Dinonaktifkan

Kueri ini hanya mengembalikan batasan kunci asing yang dinonaktifkan di database saat ini. Untuk contoh ini, saya hanya mengembalikan nama kendala, beserta statusnya yang dinonaktifkan dan tepercaya.

SELECT 
  name AS 'Constraint',
  is_disabled,
  is_not_trusted
FROM sys.foreign_keys
WHERE is_disabled = 1;

Hasil:

+------------------------+---------------+------------------+
| Constraint             | is_disabled   | is_not_trusted   |
|------------------------+---------------+------------------|
| FK_BandMember_Band     | 1             | 1                |
| FK_BandMember_Musician | 1             | 1                |
+------------------------+---------------+------------------+

Ini menanyakan sys.foreign_keys 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 hanya diaktifkan batasan kunci asing, cukup ubah 1 ke 0 .

Perhatikan bahwa is_not_trusted bendera juga disetel ke 1 untuk kendala yang dinonaktifkan ini. Itu karena sistem tidak dapat menjamin bahwa kendala telah memeriksa semua data. Ini masuk akal, karena menonaktifkan batasan membuka potensi data yang tidak valid untuk masuk ke database tanpa diperiksa.

Ini query yang sama lagi, tapi kali ini saya menyertakan tabel dan tabel referensi untuk setiap kendala:

SELECT 
  name AS 'Constraint',
  OBJECT_NAME(parent_object_id) AS 'Table',
  OBJECT_NAME(referenced_object_id) AS 'Referenced Table',
  is_disabled,
  is_not_trusted
FROM sys.foreign_keys
WHERE is_disabled = 1;

Hasil:

+------------------------+------------+--------------------+---------------+------------------+
| Constraint             | Table      | Referenced Table   | is_disabled   | is_not_trusted   |
|------------------------+------------+--------------------+---------------+------------------|
| FK_BandMember_Band     | BandMember | Band               | 1             | 1                |
| FK_BandMember_Musician | BandMember | Musician           | 1             | 1                |
+------------------------+------------+--------------------+---------------+------------------+

Contoh 2 – Mengembalikan Semua Batasan Kunci Asing

Kueri berikut mengembalikan semua batasan kunci asing untuk database saat ini (bukan hanya yang dinonaktifkan):

SELECT 
  name AS 'Constraint',
  is_disabled,
  is_not_trusted
FROM sys.foreign_keys;

Hasil:

+--------------------------------+---------------+------------------+
| Constraint                     | is_disabled   | is_not_trusted   |
|--------------------------------+---------------+------------------|
| FK_BandMember_Band             | 1             | 1                |
| FK_BandMember_Musician         | 1             | 1                |
| FK_MembershipPeriod_BandMember | 0             | 0                |
+--------------------------------+---------------+------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Coba Praktik Terbaik Pemantauan Database MySQL ini

  2. Tidak dapat menemukan prosedur tersimpan 'dbo.aspnet_CheckSchemaVersion'

  3. Memulai GearHost untuk Pengembangan Database SQL Server

  4. JSON_QUERY() Contoh di SQL Server (T-SQL)

  5. Dapatkan AVG mengabaikan nilai Null atau Zero