SQL सर्वर में, OBJECTPROPERTY()
फ़ंक्शन वर्तमान डेटाबेस में स्कीमा-स्कोप्ड ऑब्जेक्ट्स के बारे में जानकारी देता है।
ये स्कीमा-स्कोप्ड ऑब्जेक्ट वे हैं जिन्हें आप sys.objects
. को क्वेरी करके देख सकते हैं सिस्टम कैटलॉग दृश्य। इसका उपयोग उन ऑब्जेक्ट्स के लिए नहीं किया जा सकता जो स्कीमा-स्कोप्ड नहीं हैं।
आप OBJECTPROPERTY()
. का उपयोग कर सकते हैं यह जाँचने के लिए कि क्या कोई वस्तु एक तालिका, दृश्य, संग्रहीत कार्यविधि आदि है। आप इसका उपयोग यह जाँचने के लिए भी कर सकते हैं कि क्या तालिका में प्राथमिक कुंजी, विदेशी कुंजी, विदेशी कुंजी संदर्भ आदि है।
सिंटैक्स
वाक्य रचना सरल है। फ़ंक्शन दो तर्कों को स्वीकार करता है:ऑब्जेक्ट की आईडी, और वह संपत्ति जिसे आप वापस करना चाहते हैं।
OBJECTPROPERTY ( id , property )
उदाहरण 1 - मूल उपयोग
इस फ़ंक्शन के मूल उपयोग को प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT OBJECTPROPERTY('885578193', 'IsTable') AS Result;
परिणाम:
+----------+ | Result | |----------| | 1 | +----------+
इस मामले में, 885578193
. की आईडी वाला कोई ऑब्जेक्ट है और यह एक टेबल है।
मुझे पता है कि यह एक टेबल है क्योंकि IsTable
. का परिणाम है संपत्ति है 1
. यदि वस्तु एक तालिका नहीं थी, तो यहाँ परिणाम 0
. होगा ।
उदाहरण 2 - वस्तु का नामकरण
पिछले उदाहरण में, मैं वस्तु की आईडी जानता था। ज्यादातर मामलों में आप शायद केवल वस्तु का नाम जानते होंगे, लेकिन उसकी आईडी नहीं। ऐसे मामलों में, आप OBJECT_ID()
. का उपयोग कर सकते हैं ऑब्जेक्ट की आईडी उसके नाम के आधार पर प्राप्त करने के लिए कार्य करता है।
इस तरह:
SELECT OBJECTPROPERTY(OBJECT_ID(N'Artists'), 'IsTable') AS Result;
परिणाम:
+----------+ | Result | |----------| | 1 | +----------+
उदाहरण 3 - योग्य वस्तु का नाम
OBJECT_ID()
पर कॉल करते समय फ़ंक्शन, आप दो या तीन भाग नाम भी प्रदान कर सकते हैं (स्कीमा नाम और डेटाबेस नाम शामिल करने के लिए)।
SELECT OBJECTPROPERTY(OBJECT_ID(N'Music.dbo.Artists'), 'IsTable') AS Result;
परिणाम:
+----------+ | Result | |----------| | 1 | +----------+
हालांकि, इस धोखे में आपको यह सोचने की अनुमति न दें कि OBJECTPROPERTY()
उस डेटाबेस का उपयोग करेगा। यह नहीं होगा (जब तक कि यह वर्तमान डेटाबेस के समान न हो)। जहां तक इसका संबंध है, यह केवल एक ऑब्जेक्ट आईडी प्राप्त कर रहा है। इसे भूलने से भ्रामक परिणाम हो सकते हैं।
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
USE WideWorldImportersDW; SELECT OBJECT_ID(N'Music.dbo.Artists') AS [OBJECT_ID], OBJECT_NAME(OBJECT_ID(N'Music.dbo.Artists')) AS [OBJECT_NAME], OBJECTPROPERTY(OBJECT_ID(N'Music.dbo.Artists'), 'IsTable') AS [IsTable]; USE Music; SELECT OBJECT_ID(N'Music.dbo.Artists') AS [OBJECT_ID], OBJECT_NAME(OBJECT_ID(N'Music.dbo.Artists')) AS [OBJECT_NAME], OBJECTPROPERTY(OBJECT_ID(N'Music.dbo.Artists'), 'IsTable') AS [IsTable];
परिणाम:
Changed database context to 'WideWorldImportersDW'. +-------------+---------------+-----------+ | OBJECT_ID | OBJECT_NAME | IsTable | |-------------+---------------+-----------| | 885578193 | CityKey | 0 | +-------------+---------------+-----------+ (1 row affected) Changed database context to 'Music'. +-------------+---------------+-----------+ | OBJECT_ID | OBJECT_NAME | IsTable | |-------------+---------------+-----------| | 885578193 | Artists | 1 | +-------------+---------------+-----------+ (1 row affected)
इस उदाहरण में, दो अलग-अलग डेटाबेस में एक ही आईडी वाला ऑब्जेक्ट होता है। उनमें से एक टेबल है और दूसरा नहीं है। इसलिए हमें पहली क्वेरी में नकारात्मक और दूसरे में सकारात्मक परिणाम मिलता है।
उदाहरण 4 - अधिक गुण
यहां एक उदाहरण दिया गया है जो अधिक गुण देता है।
USE WideWorldImportersDW; DECLARE @objectId int = OBJECT_ID(N'Dimension.City'); SELECT OBJECTPROPERTY(@objectId, 'OwnerId') AS OwnerId, OBJECTPROPERTY(@objectId, 'SchemaId') AS SchemaId, OBJECTPROPERTY(@objectId, 'IsTable') AS IsTable, OBJECTPROPERTY(@objectId, 'TableHasPrimaryKey') AS TableHasPrimaryKey, OBJECTPROPERTY(@objectId, 'TableHasForeignKey') AS TableHasForeignKey, OBJECTPROPERTY(@objectId, 'TableHasForeignRef') AS TableHasForeignRef, OBJECTPROPERTY(@objectId, 'TableHasIdentity') AS TableHasIdentity;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
OwnerId | 1 SchemaId | 6 IsTable | 1 TableHasPrimaryKey | 1 TableHasForeignKey | 0 TableHasForeignRef | 1 TableHasIdentity | 0
ये केवल 103 संपत्तियों में से कुछ हैं जिन्हें आप OBJECTPROPERTY()
के लिए क्वेरी कर सकते हैं लिए। पूरी सूची के लिए नीचे देखें।
उदाहरण 5 - WHERE क्लॉज में
आप OBJECTPROPERTY()
. का उपयोग कर सकते हैं एक WHERE
. में यदि आवश्यक हो तो खंड।
इस उदाहरण में, मैं दो क्वेरीज़ चलाता हूं:एक वह टेबल लौटाता है जिसमें एक विदेशी कुंजी होती है, और एक जो एक विदेशी कुंजी द्वारा संदर्भित टेबल लौटाती है।
USE WideWorldImporters; SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables WHERE OBJECTPROPERTY(object_id, 'TableHasForeignKey') = 1; SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables WHERE OBJECTPROPERTY(object_id, 'TableHasForeignRef') = 1;
परिणाम:
Changed database context to 'WideWorldImporters'. +-------------+-----------------------+ | Schema | Table | |-------------+-----------------------| | Warehouse | Colors | | Sales | OrderLines | | Warehouse | PackageTypes | | Warehouse | StockGroups | | Warehouse | StockItemStockGroups | | Application | StateProvinces | | Sales | CustomerTransactions | | Application | Cities | | Application | SystemParameters | | Sales | InvoiceLines | | Purchasing | Suppliers | | Warehouse | StockItemTransactions | | Sales | Customers | | Purchasing | PurchaseOrders | | Sales | Orders | | Application | People | | Warehouse | StockItems | | Application | Countries | | Warehouse | StockItemHoldings | | Purchasing | PurchaseOrderLines | | Application | DeliveryMethods | | Application | PaymentMethods | | Purchasing | SupplierTransactions | | Application | TransactionTypes | | Sales | SpecialDeals | | Purchasing | SupplierCategories | | Sales | BuyingGroups | | Sales | Invoices | | Sales | CustomerCategories | +-------------+-----------------------+ (29 rows affected) +-------------+--------------------+ | Schema | Table | |-------------+--------------------| | Warehouse | Colors | | Warehouse | PackageTypes | | Warehouse | StockGroups | | Application | StateProvinces | | Application | Cities | | Purchasing | Suppliers | | Sales | Customers | | Purchasing | PurchaseOrders | | Sales | Orders | | Application | People | | Warehouse | StockItems | | Application | Countries | | Application | DeliveryMethods | | Application | PaymentMethods | | Application | TransactionTypes | | Purchasing | SupplierCategories | | Sales | BuyingGroups | | Sales | Invoices | | Sales | CustomerCategories | +-------------+--------------------+ (19 rows affected)
गुणों की पूरी सूची
यहां OBJECTPROPERTY()
by द्वारा समर्थित संपत्तियों की पूरी सूची दी गई है :
- CnstIsClustKey
- CnstIsColumn
- CnstIsDeleteCascade
- CnstIsअक्षम
- 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
- बाधा है
- IsDefault
- IsDefaultCnst
- नियतात्मक है
- एन्क्रिप्टेड है
- निष्पादित है
- IsExtendedProc
- IsForeignKey
- इंडेक्स किया गया है
- अनुक्रमणीय है
- IsInlineFunction
- आईएसएमएसशिप किया गया
- IsPrimaryKey
- इस प्रक्रिया
- IsQuotedIdentOn
- IsQueue
- IsReplProc
- इसरूल
- IscalarFunction
- इसस्कीमा बाउंड
- IsSystemTable
- IsSystemVerified
- इसटेबल
- IsTableFunction
- IsTrigger
- IsUniqueCnst
- IsUserTable
- IsView
- स्वामी आईडी
- स्कीमा आईडी
- TableDeleteTrigger
- TableDeleteTriggerCount
- TableFullTextMergeStatus
- टेबलफुलटेक्स्टबैकग्राउंडअपडेटइंडेक्सऑन
- TableFulltextCatalogId
- टेबलफुलटेक्स्टचेंजट्रैकिंगऑन
- TableFulltextDocsसंसाधित
- टेबलफुलटेक्स्टफेलकाउंट
- टेबलफुलटेक्स्टआइटमकाउंट
- टेबलफुलटेक्स्टकी कॉलम
- तालिकापूर्णपाठलंबित परिवर्तन
- TableFulltextPopulateStatus
- TableHasActiveFulltextIndex
- TableHasCheckCnst
- TableHasClustIndex
- TableHasDefaultCnst
- TableHasDeleteTrigger
- TableHasForeignKey
- TableHasForeignRef
- TableHasIdentity
- TableHasIndex
- TableHasInsertTrigger
- TableHasNonclustIndex
- TableHasPrimaryKey
- TableHasRowGuidCol
- TableHasTextImage
- टेबलहैसटाइमस्टैम्प
- TableHasUniqueCnst
- TableHasUpdateTrigger
- TableHasVarDecimalStorageFormat
- TableInsertTrigger
- TableInsertTriggerCount
- TableIsFake
- TableIsLockedOnBulkLoad
- TableIsMemoryOptimized
- टेबल पर पिन किया गया
- TableTextInRowLimit
- टेबलअपडेट ट्रिगर
- TableUpdateTriggerCount
- TableHasColumnSet
- टेबल टेम्पोरल टाइप
प्रत्येक संपत्ति की विस्तृत व्याख्या के लिए Microsoft दस्तावेज़ देखें।