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

Periksa apakah Tabel Direferensikan oleh Kunci Asing di SQL Server dengan OBJECTPROPERTY()

Anda dapat menggunakan OBJECTPROPERTY() fungsi di SQL Server untuk memeriksa apakah tabel direferensikan oleh kunci asing atau tidak.

Untuk melakukannya, teruskan ID objek tabel sebagai argumen pertama, dan TableHasForeignRef sebagai argumen kedua. Fungsi mengembalikan 1 atau 0 tergantung pada apakah direferensikan oleh kunci asing atau tidak.

Nilai kembalian 1 berarti tabel adalah direferensikan oleh kunci asing, dan nilai 0 berarti bukan.

Perhatikan bahwa contoh yang disajikan di sini tidak mencantumkan kunci asing atau tabelnya atau semacamnya. Mereka hanya mengembalikan nilai benar/salah yang dapat Anda gunakan untuk menguji apakah tabel direferensikan oleh kunci asing atau tidak. Jika Anda perlu membuat daftar semua kunci asing yang mereferensikan tabel tertentu, lihat Mengembalikan Semua Kunci Asing yang Mereferensikan Tabel yang Diberikan di SQL Server. Contoh dalam artikel tersebut mencantumkan setiap kunci asing, serta tabel kunci asing, dan tabel kunci utama.

Contoh 1 – Penggunaan Dasar

Berikut contoh cepat untuk ditunjukkan.

USE WideWorldImportersDW;
SELECT OBJECTPROPERTY(1141579105, 'TableHasForeignRef') AS [TableHasForeignRef];

Hasil:

+----------------------+
| TableHasForeignRef   |
|----------------------|
| 1                    |
+----------------------+

Dalam hal ini, WideWorldImportersDW database memiliki tabel dengan ID yang disediakan, dan direferensikan oleh kunci asing.

Contoh 2 – Mendapatkan ID Objek

Jika Anda mengetahui nama tabel, tetapi tidak mengetahui ID-nya, Anda dapat menggunakan OBJECT_ID() berfungsi untuk mengambil ID berdasarkan namanya.

Contoh:

SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasForeignRef') AS [TableHasForeignRef];

Hasil:

+----------------------+
| TableHasForeignRef   |
|----------------------|
| 1                    |
+----------------------+

Ini adalah objek yang sama dari contoh sebelumnya.

Ini dia lagi dengan keluaran ID secara terpisah.

SELECT 
  OBJECT_ID('Dimension.City') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasForeignRef') AS [TableHasForeignRef];

Hasil:

+-------------+----------------------+
| Object ID   | TableHasForeignRef   |
|-------------+----------------------|
| 1013578649  | 1                    |
+-------------+----------------------+

Contoh 3 – Ketika Tabel TIDAK Direferensikan oleh Kunci Asing

Inilah yang terjadi jika tabel tidak direferensikan oleh kunci asing.

SELECT OBJECTPROPERTY(OBJECT_ID('Integration.Lineage'), 'TableHasForeignRef') AS [TableHasForeignRef];

Hasil:

+----------------------+
| TableHasForeignRef   |
|----------------------|
| 0                    |
+----------------------+

Dalam hal ini, objeknya adalah tabel, hanya saja tidak direferensikan oleh kunci asing.

Contoh 4 – Ketika Objek Bukan Tabel

Inilah yang terjadi jika database memang berisi objek dengan ID, tetapi objek itu bukan tabel.

SELECT OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasForeignRef') AS [TableHasForeignRef];

Hasil:

+----------------------+
| TableHasForeignRef   |
|----------------------|
| NULL                 |
+----------------------+

Contoh 5 – Objek Tidak Ada

SQL Server mengasumsikan bahwa ID objek dalam konteks database saat ini. Jika Anda memasukkan ID objek dari database yang berbeda, Anda akan mendapatkan hasil NULL atau Anda akan mendapatkan hasil yang salah.

SELECT 
  OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasForeignRef') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'TableHasForeignRef') AS [12345678];

Hasil:

+-----------------+------------+
| InvalidObject   | 12345678   |
|-----------------+------------|
| NULL            | NULL       |
+-----------------+------------+

Dalam hal ini database tidak berisi objek dengan nama atau ID itu, jadi saya mendapatkan hasil NULL.

Anda juga akan mendapatkan NULL pada kesalahan atau jika Anda tidak memiliki izin untuk melihat objek.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus semua spasi dari string di SQL Server

  2. Bagaimana cara melakukan penyisipan dan pengembalian identitas yang disisipkan dengan Dapper?

  3. SQL Server 2016 :sys.dm_exec_function_stats

  4. Temukan Asosiasi Antara Akun Email Database dan Prinsipal Database di SQL Server (T-SQL)

  5. Menghapus Akun Email Database dari Profil (SSMS)