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

Cari Tahu apakah Objek adalah Kunci Asing dengan OBJECTPROPERTY() di SQL Server

Anda dapat menggunakan OBJECTPROPERTY() fungsi di SQL Server untuk mengetahui apakah suatu objek adalah kunci asing atau tidak.

Untuk mengetahui apakah suatu objek adalah kunci asing, berikan ID objek sebagai argumen pertama, dan IsForeignKey sebagai argumen kedua. Fungsi mengembalikan 1 atau 0 tergantung apakah itu kunci asing atau bukan.

Nilai kembalian 1 artinya adalah kunci asing, dan nilai 0 berarti tidak.

Contoh 1 – Penggunaan Dasar

Berikut contoh cepat untuk ditunjukkan.

USE Music;
SELECT OBJECTPROPERTY(981578535, 'IsForeignKey') AS [IsForeignKey];

Hasil:

+----------------+
| IsForeignKey   |
|----------------|
| 1              |
+----------------+

Dalam hal ini, Musik database memiliki objek dengan ID yang diberikan, dan itu adalah kunci asing.

Contoh 2 – Mendapatkan ID Objek

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

Contoh:

SELECT OBJECTPROPERTY(OBJECT_ID('FK_Albums_Artists'), 'IsForeignKey') AS [IsForeignKey];

Hasil:

+----------------+
| IsForeignKey   |
|----------------|
| 1              |
+----------------+

Dalam hal ini saya memeriksa objek yang sama dari contoh sebelumnya.

Ini dia lagi dengan keluaran ID secara terpisah.

SELECT 
  OBJECT_ID('FK_Albums_Artists') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('FK_Albums_Artists'), 'IsForeignKey') AS [IsForeignKey];

Hasil:

+-------------+----------------+
| Object ID   | IsForeignKey   |
|-------------+----------------|
| 981578535   | 1              |
+-------------+----------------+

Contoh 3 – Ketika Objek BUKAN Kunci Asing

Inilah yang terjadi jika objek bukan kunci asing.

SELECT OBJECTPROPERTY(1525580473, 'IsForeignKey') AS [IsForeignKey];

Hasil:

+----------------+
| IsForeignKey   |
|----------------|
| 0              |
+----------------+

Dalam hal ini, database tidak sebenarnya memiliki objek dengan ID tersebut, tetapi objek tersebut sebenarnya adalah tampilan, jadi saya mendapatkan hasil negatif.

Ini dia lagi menggunakan OBJECT_ID() .

SELECT 
  OBJECT_ID('RockAlbums') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsForeignKey') AS [IsForeignKey],
  OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];

Hasil:

+-------------+----------------+----------+
| Object ID   | IsForeignKey   | IsView   |
|-------------+----------------+----------|
| 1525580473  | 0              | 1        |
+-------------+----------------+----------+

Dalam hal ini saya juga mengecek apakah objek tersebut adalah view, dan hasilnya positif.

Contoh 4 – 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'), 'IsForeignKey') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'IsForeignKey') 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. SQL Server 2005 dan cakupan tabel sementara

  2. Jenis variabel tak terduga yang dikembalikan oleh Receive-Job

  3. Cara mendapatkan daftar Tabel tanpa Batasan Kunci Utama di Database SQL Server - Tutorial SQL Server / T-SQL Bagian 58

  4. Generator data untuk server SQL?

  5. Bagaimana cara mengubah jumlah menit ke format jj:mm di TSQL?