sp_special_columns (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar den optimala uppsättningen kolumner som entydigt identifierar en rad i tabellen. Returnerar också kolumner som automatiskt uppdateras när något värde i raden uppdateras av en transaktion.

Transact-SQL syntaxkonventioner

Syntax

sp_special_columns
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @col_type = ] 'col_type' ]
    [ , [ @scope = ] 'scope' ]
    [ , [ @nullable = ] 'nullable' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

Arguments

[ @table_name = ] N'table_name'

Namnet på tabellen som används för att returnera kataloginformation. @table_name är sysname, utan standard. Wildcard-mönstermatchning stöds inte.

[ @table_owner = ] N'table_owner'

Bordsägaren till tabellen används för att returnera kataloginformation. @table_owner är sysname, med standardvärdet .NULL Wildcard-mönstermatchning stöds inte. Om @table_owner inte specificeras gäller standardreglerna för tabellsynlighet i det underliggande databashanteringssystemet (DBMS).

I SQL Server, om den nuvarande användaren äger en tabell med det angivna namnet, returneras kolumnerna i den tabellen. Om @table_owner inte är specificerat och den nuvarande användaren inte äger en tabell med den angivna @table_name, letar denna procedur efter en tabell över den specificerade @table_name som ägs av databasägaren. Om tabellen existerar returneras dess kolumner.

[ @table_qualifier = ] N'table_qualifier'

Namnet på bordets kvalificerade. @table_qualifier är sysname, med standardvärdet .NULL Olika DBMS-produkter stödjer tredelad namngivning för tabeller (<qualifier>.<owner>.<name>). I SQL Server representerar denna kolumn databasens namn. I vissa produkter representerar den servernamnet på databasmiljön i tabellen.

[ @col_type = ] 'col_type'

Kolumntypen. @col_type är karaktär(1), med en standard på R.

  • Typen R returnerar den optimala kolumnen eller uppsättningen av kolumner som, genom att hämta värden från kolumnen eller kolumnerna, tillåter att vilken rad som helst i den angivna tabellen kan identifieras entyd. En kolumn kan vara antingen en pseudokolumn designad för detta ändamål, eller kolumnen eller kolumnerna i vilket unikt index som helst för tabellen.

  • Type V returnerar kolumnen eller kolumnerna i den angivna tabellen, om sådana finns, som automatiskt uppdateras av datakällan när något värde i raden uppdateras av någon transaktion.

[ @scope = ] 'scope'

ROWID:s minsta nödvändiga omfattning. @scope är karaktär(1), med standardvärdet .T

  • Scope C anger att ROWID endast är giltig när den är placerad på den raden.
  • Scope T specificerar att ROWID är giltigt för transaktionen.

[ @nullable = ] 'nullbar'

Specificerar om de speciella kolumnerna kan acceptera ett NULL värde. @nullable är karaktär(1), med en standard på U.

  • O specificerar speciella kolumner som inte tillåter nollvärden.
  • U specificerar kolumner som är delvis nullbara.

[ @ODBCVer = ] ODBCVer

ODBC-versionen användes. @ODBCVer är int, med standardvärdet .2 Detta värde indikerar ODBC version 2.0. För mer information om skillnaden mellan ODBC version 2.0 och ODBC version 3.0, se ODBC-specifikationen SQLSpecialColumns för ODBC version 3.0.

Returnera kodvärden

Ingen.

Resultatuppsättning

Kolumnnamn Datatyp Description
SCOPE smallint Faktisk omfattning av rad-ID:t. Kan vara 0, 1eller 2. SQL Server returnerar 0alltid . Detta fält returnerar alltid ett värde.

0 = SQL_SCOPE_CURROW. Rad-ID:t är garanterat giltigt endast när det är placerat på den raden. Ett senare omval med rad-ID kanske inte returnerar en rad om raden uppdaterades eller raderades av en annan transaktion.
1 = SQL_SCOPE_TRANSACTION. Rad-ID:t garanteras vara giltigt under hela den aktuella transaktionen.
2 = SQL_SCOPE_SESSION. Rad-ID:t garanteras vara giltigt under hela sessionen (över transaktionsgränser).
COLUMN_NAME sysname Kolumnnamn för varje kolumn i @table_name returnerade. Detta fält returnerar alltid ett värde.
DATA_TYPE smallint ODBC SQL-datatyp.
TYPE_NAME sysname Datakällasberoende datatypsnamn; Till exempel Char, Varchar, Money eller Text.
PRECISION int Precisionen i kolumnen på datakällan. Detta fält returnerar alltid ett värde.
LENGTH int Längd, i bytes, krävs för datatypen i dess binära form i datakällan, till exempel 10 för char(10),4 för heltal och 2 för smallint.
SCALE smallint Skalan på kolumnen i datakällan. NULL returneras för datatyper där skala inte är tillämplig.
PSEUDO_COLUMN smallint Anger om kolumnen är en pseudokolumn. SQL Server returnerar 1alltid :

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

Anmärkningar

sp_special_columns motsvarar SQLSpecialColumns i ODBC. De returnerade resultaten är ordnade efter SCOPE.

Permissions

Kräver SELECT tillstånd på schemat.

Examples

Följande exempel returnerar information om kolumnen som entydigt identifierar rader i HumanResources.Department tabellen.

USE AdventureWorks2022;
GO

EXECUTE sp_special_columns
    @table_name = 'Department',
    @table_owner = 'HumanResources';