Anda dapat menggunakan OBJECTPROPERTY()
fungsi di SQL Server untuk memeriksa apakah tabel memiliki satu atau lebih batasan kunci asing.
Untuk melakukannya, berikan ID objek tabel sebagai argumen pertama, dan TableHasForeignKey
sebagai argumen kedua. Fungsi mengembalikan 1
atau 0
tergantung apakah ia memiliki batasan kunci asing atau tidak.
Nilai kembalian 1
berarti tabel tidak memiliki batasan kunci asing, dan nilai 0
berarti tidak. Nilai kembalian 1
berlaku terlepas dari berapa banyak kunci asing yang dimiliki tabel (selama memiliki setidaknya satu).
Jika Anda menginginkan daftar kunci asing yang sebenarnya, lihat Daftar Semua Kunci Asing pada Tabel di SQL Server.
Contoh 1 – Penggunaan Dasar
Berikut contoh cepat untuk ditunjukkan.
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(1493580359, 'TableHasForeignKey') AS [TableHasForeignKey];
Hasil:
+----------------------+ | TableHasForeignKey | |----------------------| | 1 | +----------------------+
Dalam hal ini, WideWorldImportersDW database memiliki tabel dengan ID yang disediakan, dan memiliki batasan 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('Fact.Order'), 'TableHasForeignKey') AS [TableHasForeignKey];
Hasil:
+----------------------+ | TableHasForeignKey | |----------------------| | 1 | +----------------------+
Ini adalah objek yang sama dari contoh sebelumnya.
Ini dia lagi dengan keluaran ID secara terpisah.
SELECT OBJECT_ID('Fact.Order') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Fact.Order'), 'TableHasForeignKey') AS [TableHasForeignKey];
Hasil:
+-------------+----------------------+ | Object ID | TableHasForeignKey | |-------------+----------------------| | 1493580359 | 1 | +-------------+----------------------+
Contoh 3 – Ketika Tabel TIDAK Memiliki Kunci Asing
Inilah yang terjadi jika tabel tidak memiliki kunci asing.
SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasForeignKey') AS [TableHasForeignKey];
Hasil:
+----------------------+ | TableHasForeignKey | |----------------------| | 0 | +----------------------+
Dalam hal ini, objeknya adalah tabel, hanya saja tidak memiliki 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'), 'TableHasForeignKey') AS [TableHasForeignKey];
Hasil:
+----------------------+ | TableHasForeignKey | |----------------------| | 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'), 'TableHasForeignKey') AS [InvalidObject], OBJECTPROPERTY(12345678, 'TableHasForeignKey') 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.