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

Lihat apakah Tabel memiliki Batasan DEFAULT di SQL Server menggunakan OBJECTPROPERTY()

Anda dapat menggunakan OBJECTPROPERTY() fungsi di SQL Server untuk melihat apakah tabel memiliki batasan DEFAULT atau tidak.

Untuk melakukannya, berikan ID objek tabel sebagai argumen pertama, dan TableHasDefaultCnst sebagai argumen kedua. Fungsi mengembalikan 1 atau 0 tergantung pada apakah itu memiliki batasan DEFAULT atau tidak.

Nilai kembalian 1 berarti tabel memiliki batasan DEFAULT, dan nilai 0 berarti bukan.

Contoh 1 – Penggunaan Dasar

Berikut contoh cepat untuk ditunjukkan.

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

Hasil:

+-----------------------+
| TableHasDefaultCnst   |
|-----------------------|
| 1                     |
+-----------------------+

Dalam hal ini, WideWorldImportersDW database memiliki tabel dengan ID yang disediakan, dan memiliki batasan DEFAULT.

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'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];

Hasil:

+-----------------------+
| TableHasDefaultCnst   |
|-----------------------|
| 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'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];

Hasil:

+-------------+-----------------------+
| Object ID   | TableHasDefaultCnst   |
|-------------+-----------------------|
| 1013578649  | 1                     |
+-------------+-----------------------+

Contoh 3 – Ketika Tabel TIDAK memiliki Batasan DEFAULT

Inilah yang terjadi jika tabel tidak memiliki batasan DEFAULT.

SELECT OBJECTPROPERTY(OBJECT_ID('Fact.Movement'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];

Hasil:

+-----------------------+
| TableHasDefaultCnst   |
|-----------------------|
| 0                     |
+-----------------------+

Dalam hal ini, objeknya adalah tabel, hanya saja tidak memiliki batasan DEFAULT.

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'), 
    'TableHasDefaultCnst') AS [TableHasDefaultCnst];

Hasil:

+-----------------------+
| TableHasDefaultCnst   |
|-----------------------|
| 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'), 'TableHasDefaultCnst') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'TableHasDefaultCnst') 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. Mensimulasikan fungsi group_concat MySQL di Microsoft SQL Server 2005?

  2. Bagaimana cara mengubah SQL Server 2005 menjadi case sensitive?

  3. Cara Membuat SQL Trace Untuk Menangkap Acara SQL Server

  4. Memanggil prosedur tersimpan dengan nilai kembali

  5. Hapus SCHEMABINDING dari Fungsi Buatan Pengguna di SQL Server