sql >> Databáze >  >> RDS >> Sqlserver

Jak funguje OBJECTPROPERTYEX() na serveru SQL Server

V SQL Server, OBJECTPROPERTYEX() funkce vrací informace o objektech s rozsahem schématu v aktuální databázi.

Tato funkce dělá přesně to samé jako OBJECTPROPERTY() , kromě toho, že podporuje více vlastností a návratová hodnota je jiná. OBJECTPROPERTYEX() funkce vrací sql_variant typ, zatímco OBJECTPROPERTY() vrátí int typ.

Syntaxe

Funkce přijímá dva argumenty:ID objektu a vlastnost, kterou chcete vrátit.

OBJECTPROPERTYEX ( id , property )

Příklad 1 – Základní použití

Zde je příklad demonstrující základní použití této funkce.

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

Výsledek:

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

V tomto případě se jedná o objekt s ID 885578193 a je to stůl. BaseType tohoto objektu je U.

Příklad 2 – Pojmenování objektu

V předchozím příkladu jsem znal ID objektu. Ve většině případů pravděpodobně budete znát pouze název objektu, ale ne jeho ID. V takových případech můžete použít OBJECT_ID() funkce k získání ID objektu na základě jeho názvu.

Takhle:

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

Výsledek:

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

Příklad 3 – Další vlastnosti

Zde je příklad, který vrací více vlastností, které nevrátíte pomocí 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;

Výsledek:

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

Při psaní OBJECTPROPERTYEX() funkce podporuje 109 vlastností. Níže naleznete úplný seznam vlastností podporovaných touto funkcí.

Příklad 4 – V klauzuli WHERE

Můžete použít OBJECTPROPERTYEX() v WHERE doložka, je-li požadována.

V tomto příkladu spustím dva dotazy:jeden, který vrátí tabulky, které mají cizí klíč, a jeden, který vrátí tabulky, na které odkazuje cizí klíč.

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;

Výsledek:

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)

Úplný seznam vlastností

Zde je úplný seznam vlastností podporovaných OBJECTPROPERTYEX() funkce:

  • 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
  • HasAfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • Je výchozí
  • IsDefaultCnst
  • IsDeterministic
  • IsEncrypted
  • IsExecuted
  • IsExtendedProc
  • JeForeignKey
  • IsIndexed
  • Je indexovatelné
  • IsInlineFunction
  • IsMSShipped
  • Je Přesné
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • JeUniqueCnst
  • IsUserTable
  • IsView
  • ID vlastníka
  • SchemaId
  • SystemDataAccess
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TableFulltextDocsProcessed
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TableFulltextKeyColumn
  • TableFulltextPendingChanges
  • TableFulltextPopulateStatus
  • TableFullTextSemanticExtraction
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHasForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclusIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • UserDataAccess
  • TableHasColumnSet
  • Kardinalita
  • TableTemporalType

Podrobné vysvětlení každé vlastnosti naleznete v dokumentaci společnosti Microsoft.

Viz také OBJECTPROPERTY() vs OBJECTPROPERTYEX() pro podrobnější vysvětlení rozdílů mezi těmito dvěma funkcemi.


  1. MySQL – Tato verze MySQL zatím nepodporuje poddotaz 'LIMIT &IN/ALL/ANY/SOME

  2. Optimalizace dotazů SQL:Doporučené postupy pro lepší výkon

  3. Funkce Postgres Hodnota NULL pro řádek, který odkazuje na NEW

  4. Kde PostgreSQL ukládá konfigurační/conf soubory?