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

Cara mendapatkan Tabel Induk, Tabel Referensi, Nama dan Kolom Batasan Kunci Asing di SQL Server - Tutorial SQL Server / TSQL Part 71

Skenario:

Anda bekerja sebagai Pengembang SQL Server, Anda diminta untuk memberikan kueri yang akan mengembalikan semua tabel induk, tabel referensi, Batasan Kunci Asing, dan Kolom yang digunakan dalam definisi Batasan Kunci Asing.

Solusi:

Kita dapat menggunakan tampilan sistem untuk mengumpulkan informasi ini. Dalam kueri kami di bawah ini, kami akan menggunakan tiga

tampilan sistem
sys.foreign_keys
sys.foreign_key_columns
sys.columns

untuk menjawab Permintaan. Karena kita dapat memiliki kolom kunci utama komposit yang digunakan dalam Batasan Kunci Asing, saya telah menggunakan FOR XML Path untuk menggabungkan baris menjadi kolom sehingga dapat memberikan daftar kolom dalam satu baris.

;With CTE_FK AS (
SELECT Schema_Name(Schema_id) as TableSchemaName,
  object_name(FK.parent_object_id) ParentTableName,
  object_name(FK.referenced_object_id) ReferenceTableName,
  FK.name AS ForeignKeyConstraintName,c.name as ReferencedColumnList,
  cf.name as ParentColumnName 
       FROM sys.foreign_keys AS FK
       INNER JOIN sys.foreign_key_columns AS FKC
               ON FK.OBJECT_ID = FKC.constraint_object_id
               INNER JOIN sys.columns c
          on  c.OBJECT_ID = FKC.referenced_object_id
                 AND c.column_id = FKC.referenced_column_id
                 INNER JOIN sys.columns cf
          on  cf.OBJECT_ID = FKC.parent_object_id
                 AND cf.column_id = FKC.parent_column_id
                 )
                 Select TableSchemaName,
                 ParentTableName,
                 ReferenceTableName,
                 ForeignKeyConstraintName,stuff((
                 Select ','+ParentColumnName
                 from CTE_FK i
                 where i.ForeignKeyConstraintName=o.ForeignKeyConstraintName
                 and i.TableSchemaName=o.TableSchemaName
                 and i.ParentTableName=o.ParentTableName
                 and i.ReferenceTableName=o.ReferenceTableName
                 for xml path('')), 1, 1, '') ParentColumnList
                 ,stuff((
                 Select ','+ReferencedColumnList
                 from CTE_FK i
                 where i.ForeignKeyConstraintName=o.ForeignKeyConstraintName
                 and i.TableSchemaName=o.TableSchemaName
                 and i.ParentTableName=o.ParentTableName
                 and i.ReferenceTableName=o.ReferenceTableName
                 for xml path('')), 1, 1, '') RefColumnList
                 from CTE_FK o
                 group by 
                 tableSchemaName,
                 ParentTableName,
                 ReferenceTableName,
                 ForeignKeyConstraintName


Saya mengeksekusi skrip di atas pada salah satu database saya dan ini adalah output dengan Nama Skema, Nama Tabel Induk, Nama Tabel Referensi, Nama Batasan Kunci Asing, Daftar Kolom Induk dan Daftar Kolom Referensi yang digunakan dalam Batasan.
Cara mendapatkan Tabel Induk, Tabel Referensi, Nama Batasan Kunci Asing, daftar Kolom di SQL Server


Video Demo :Cara Mendapatkan Tabel Kunci Utama, Tabel Kunci Asing dan Nama Batasan 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. Cara Menambahkan File Log ke Database SQL Server (T-SQL)

  2. Ambil gambar dari database di asp.net

  3. Solusi paging terbaik menggunakan SQL Server 2005?

  4. Bagaimana cara mengubah skema db ke dbo

  5. Internal Replikasi Transaksional SQL Server