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

Bagaimana OBJECTPROPERTYEX() Bekerja di SQL Server

Di SQL Server, OBJECTPROPERTYEX() fungsi mengembalikan informasi tentang objek cakupan skema dalam database saat ini.

Fungsi ini melakukan hal yang persis sama dengan OBJECTPROPERTY() , kecuali bahwa itu mendukung lebih banyak properti, dan nilai pengembaliannya berbeda. OBJECTPROPERTYEX() fungsi mengembalikan sql_variant ketik, sedangkan OBJECTPROPERTY() mengembalikan int ketik.

Sintaks

Fungsi menerima dua argumen:ID objek, dan properti yang ingin Anda kembalikan.

OBJECTPROPERTYEX ( id , property )

Contoh 1 – Penggunaan Dasar

Berikut adalah contoh untuk mendemonstrasikan penggunaan dasar fungsi ini.

SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| U        |
+----------+

Dalam hal ini, ada objek dengan ID 885578193 dan itu meja. BaseType dari objek ini adalah U.

Contoh 2 – Memberi Nama Objek

Pada contoh sebelumnya, saya tahu ID objek. Dalam kebanyakan kasus, Anda mungkin hanya mengetahui nama objek, tetapi bukan ID-nya. Dalam kasus seperti itu, Anda dapat menggunakan OBJECT_ID() berfungsi untuk mendapatkan ID objek, berdasarkan namanya.

Seperti ini:

SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| U        |
+----------+

Contoh 3 – Properti Lainnya

Berikut adalah contoh yang mengembalikan lebih banyak properti yang tidak akan Anda dapatkan dengan OBJECTPROPERTY() .

USE WideWorldImportersDW;
DECLARE @objectId int = OBJECT_ID(N'Integration.GenerateDateDimensionColumns');
SELECT 
  OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType,
  OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise,
  OBJECTPROPERTYEX(@objectId, 'SystemDataAccess') AS SystemDataAccess,
  OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess;

Hasil:

+------------+-------------+--------------------+------------------+
| BaseType   | IsPrecise   | SystemDataAccess   | UserDataAccess   |
|------------+-------------+--------------------+------------------|
| IF         | 0           | 1                  | 1                |
+------------+-------------+--------------------+------------------+

Pada saat penulisan, OBJECTPROPERTYEX() fungsi mendukung 109 properti. Lihat di bawah untuk daftar lengkap properti yang didukung oleh fungsi ini.

Contoh 4 – Dalam Klausa WHERE

Anda dapat menggunakan OBJECTPROPERTYEX() dalam WHERE klausa jika diperlukan.

Dalam contoh ini, saya menjalankan dua kueri:yang mengembalikan tabel yang memiliki kunci asing, dan yang mengembalikan tabel yang direferensikan oleh kunci asing.

USE Music;
SELECT 
  SCHEMA_NAME(schema_id) AS [Schema], 
  name AS [Table]
FROM sys.tables
WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignKey') = 1;

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema], 
  name AS [Table]
FROM sys.tables
WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignRef') = 1;

Hasil:

Changed database context to 'Music'.
+----------+---------+
| Schema   | Table   |
|----------+---------|
| dbo      | Artists |
| dbo      | Albums  |
+----------+---------+
(2 rows affected)
+----------+---------+
| Schema   | Table   |
|----------+---------|
| dbo      | Artists |
| dbo      | Genres  |
| dbo      | Country |
+----------+---------+
(3 rows affected)

Daftar Lengkap Properti

Berikut daftar lengkap properti yang didukung oleh OBJECTPROPERTYEX() fungsi:

  • Tipe Dasar
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstDisabled
  • CnstIsNonclustKey
  • CnstIsNotRepl
  • CnstIsNotTrusted
  • CnstIsUpdateCascade
  • ExecIsAfterTrigger
  • ExecIsAnsiNullsOn
  • ExecIsDeleteTrigger
  • ExecIsFirstDeleteTrigger
  • ExecIsFirstInsertTrigger
  • ExecIsFirstUpdateTrigger
  • ExecIsInsertTrigger
  • ExecIsInsteadOfTrigger
  • ExecIsLastDeleteTrigger
  • ExecIsLastInsertTrigger
  • ExecIsLastUpdateTrigger
  • ExecIsQuotedIdentOn
  • ExecIsStartup
  • ExecIsTriggerDisabled
  • ExecIsTriggerNotForRepl
  • ExecIsUpdateTrigger
  • ExecIsWithNativeCompilation
  • HasAfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • Adalah Kendala
  • Apakah Default
  • IsDefaultCnst
  • ApakahDeterministik
  • Terenkripsi
  • Dieksekusi
  • IsExtendedProc
  • IsForeignKey
  • Diindeks
  • Dapat Diindeks
  • IsInlineFunction
  • Sudah Dikirim
  • Tepat
  • IsPrimaryKey
  • AdalahProsedur
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • Pemicu
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • Id Pemilik
  • Id Skema
  • SystemDataAccess
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TabelFulltextDocsDiproses
  • TabelFulltextFailCount
  • TableFulltextItemCount
  • TabelFulltextKeyColumn
  • TabelFulltextTertundaPerubahan
  • TabelFulltextPopulateStatus
  • TableFullTextSemanticExtraction
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHasForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclustIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • Akses DataPengguna
  • TableHasColumnSet
  • Kardinalitas
  • TableTemporalType

Lihat dokumentasi Microsoft untuk penjelasan mendetail tentang setiap properti.

Lihat juga OBJECTPROPERTY() vs OBJECTPROPERTYEX() untuk penjelasan lebih rinci tentang perbedaan antara kedua fungsi ini.


  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 membagi string setelah karakter tertentu di SQL Server dan memperbarui nilai ini ke kolom tertentu

  2. Skrip Inventaris Koleksi SQL Server -1

  3. SQL Server 2017:Fitur yang Tersedia di Linux

  4. Panduan Mudah tentang Cara Menggunakan Subqueries di SQL Server

  5. Bagaimana cara memasukkan tabel data ke tabel database SQL Server?