sql >> Databasteknik >  >> RDS >> Sqlserver

Hur OBJECTPROPERTYEX() fungerar i SQL Server

I SQL Server, OBJECTPROPERTYEX() funktionen returnerar information om schemaomfattade objekt i den aktuella databasen.

Den här funktionen gör exakt samma sak som OBJECTPROPERTY() , förutom att den stöder fler egenskaper och returvärdet är annorlunda. OBJECTPROPERTYEX() funktion returnerar en sql_variant typ, medan OBJECTPROPERTY() returnerar en int typ.

Syntax

Funktionen accepterar två argument:objektets ID och egenskapen du vill returnera.

OBJECTPROPERTYEX ( id , property )

Exempel 1 – Grundläggande användning

Här är ett exempel för att visa den grundläggande användningen av denna funktion.

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

Resultat:

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

I det här fallet finns det ett objekt med ID:t 885578193 och det är ett bord. BaseType för detta objekt är U.

Exempel 2 – Namnge objektet

I föregående exempel kände jag till objektets ID. I de flesta fall känner du förmodligen bara till objektets namn, men inte dess ID. I sådana fall kan du använda OBJECT_ID() funktion för att få objektets ID, baserat på dess namn.

Så här:

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

Resultat:

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

Exempel 3 – Fler egenskaper

Här är ett exempel som returnerar fler av egenskaperna som du inte kommer att få tillbaka med 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;

Resultat:

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

I skrivande stund är OBJECTPROPERTYEX() Funktionen stöder 109 egenskaper. Se nedan för en fullständig lista över egenskaper som stöds av denna funktion.

Exempel 4 – I en WHERE-klausul

Du kan använda OBJECTPROPERTYEX() i en WHERE klausul om så krävs.

I det här exemplet kör jag två frågor:en som returnerar tabeller som har en främmande nyckel och en som returnerar tabeller som refereras av en främmande nyckel.

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;

Resultat:

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)

Fullständig lista över egenskaper

Här är en fullständig lista över egenskaper som stöds av OBJECTPROPERTYEX() funktion:

  • BaseType
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstIsDisabled
  • CnstIsNonclustKey
  • CnstIsNotRepl
  • CnstIsNotTrusted
  • CnstIsUpdateCascade
  • ExecIsAfterTrigger
  • ExecIsAnsiNullsOn
  • ExecIsDeleteTrigger
  • ExecIsFirstDeleteTrigger
  • ExecIsFirstInsertTrigger
  • ExecIsFirstUpdateTrigger
  • ExecIsInsertTrigger
  • ExecIsInsteadOfTrigger
  • ExecIsLastDeleteTrigger
  • ExecIsLastInsertTrigger
  • ExecIsLastUpdateTrigger
  • ExecIsQuotedIdentOn
  • ExecIsStartup
  • ExecIsTriggerDisabled
  • ExecIsTriggerNotForRepl
  • ExecIsUpdateTrigger
  • ExecIsWithNativeCompilation
  • Har AfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • ÄrDefault
  • IsDefaultCnst
  • Är deterministisk
  • Är krypterad
  • Utförs
  • IsExtendedProc
  • IsForeignKey
  • Är indexerad
  • Är indexerbar
  • IsInlineFunction
  • Skickas MS
  • Är Precis
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • Ägar-ID
  • SchemaId
  • SystemDataAccess
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TableFulltextDocs Processed
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TabellFulltextKeyColumn
  • TabellFulltextPendingChanges
  • TabellFulltextPopuleraStatus
  • TableFullTextSemanticExtraction
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHas ForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclustIndex
  • TabellHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • UserDataAccess
  • TableHasColumnSet
  • Kardinalitet
  • TableTemporalType

Se Microsofts dokumentation för en detaljerad förklaring av varje egenskap.

Se även OBJECTPROPERTY() kontra OBJECTPROPERTYEX() för en mer detaljerad förklaring av skillnaderna mellan dessa två funktioner.


  1. Konfigurera en lyssnare i Oracle Database (12c, 18c och 19c utgåvor)

  2. Installera flera MySQL-instanser på en Linux-server - använd en separat MySQL-konfigurationsfil

  3. Hur man hanterar användare och autentisering i MySQL

  4. 2 sätt att lista alla funktioner i MariaDB