Delen via


sp_special_columns (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Geeft de optimale verzameling kolommen terug die een rij in de tabel uniek identificeren. Geeft ook kolommen terug die automatisch worden bijgewerkt wanneer een waarde in de rij wordt bijgewerkt door een transactie.

Transact-SQL syntaxis-conventies

Syntaxis

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'

De naam van de tabel die wordt gebruikt om catalogusinformatie terug te geven. @table_name is een systeemnaam, zonder standaard. Wildcard-patroonmatching wordt niet ondersteund.

[ @table_owner = ] N'table_owner'

De tabeleigenaar van de tabel die wordt gebruikt om catalogusinformatie terug te geven. @table_owner is sysname, met als standaard .NULL Wildcard-patroonmatching wordt niet ondersteund. Als @table_owner niet is gespecificeerd, gelden de standaard tabelzichtbaarheidsregels van het onderliggende databasebeheersysteem (DBMS).

In SQL Server, als de huidige gebruiker een tabel met de opgegeven naam bezit, worden de kolommen van die tabel teruggegeven. Als @table_owner niet is gespecificeerd en de huidige gebruiker geen tabel bezit van de gespecificeerde @table_name, zoekt deze procedure naar een tabel van de gespecificeerde @table_name die eigendom is van de database-eigenaar. Als de tabel bestaat, worden de kolommen teruggegeven.

[ @table_qualifier = ] N'table_qualifier'

De naam van de kwalificatiespeler op de tafel. @table_qualifier is sysname, met als standaard .NULL Verschillende DBMS-producten ondersteunen drieledige naamgeving voor tabellen (<qualifier>.<owner>.<name>). In SQL Server vertegenwoordigt deze kolom de databasenaam. In sommige producten vertegenwoordigt het de servernaam van de databaseomgeving van de tabel.

[ @col_type = ] 'col_type'

Het kolomtype. @col_type is karakter(1), met een standaard van R.

  • Type R geeft de optimale kolom of set kolommen terug die, door waarden uit de kolom of kolommen op te halen, het mogelijk maakt om elke rij in de opgegeven tabel uniek te identificeren. Een kolom kan een pseudokolom zijn die voor dit doel is ontworpen, of de kolom of kolommen van een unieke index voor de tabel.

  • Type V geeft de kolom of kolommen in de opgegeven tabel terug, indien aanwezig, die automatisch worden bijgewerkt door de databron wanneer een waarde in de rij wordt bijgewerkt door een transactie.

[ @scope = ] 'scope'

De minimaal vereiste reikwijdte van de ROWID. @scope is karakter(1), met als standaard .T

  • Scope C specificeert dat de ROWID alleen geldig is wanneer deze op die rij is geplaatst.
  • Scope T specificeert dat de ROWID geldig is voor de transactie.

[ @nullable = ] 'ongedaan'

Specificeert of de speciale kolommen een NULL waarde kunnen accepteren. @nullable is karakter(1), met een standaard van U.

  • O specificeert speciale kolommen die geen nullwaarden toestaan.
  • U specificeert kolommen die gedeeltelijk ongeldig zijn.

[ @ODBCVer = ] ODBCVer

De ODBC-versie die wordt gebruikt. @ODBCVer is int, met een standaard van 2. Deze waarde geeft ODBC versie 2.0 aan. Voor meer informatie over het verschil tussen ODBC versie 2.0 en ODBC versie 3.0, zie de ODBC-specificatie SQLSpecialColumns voor ODBC versie 3.0.

Codewaarden retourneren

Geen.

Resultaatset

Kolomnaam Gegevenstype Description
SCOPE smallint De werkelijke reikwijdte van de rij-ID. De waarde kan 0, 1of 2 zijn. SQL Server geeft altijd .0 Dit veld geeft altijd een waarde terug.

0 = SQL_SCOPE_CURROW. De rij-ID is gegarandeerd geldig alleen zolang deze op die rij staat. Een latere herselectie met de rij-ID geeft mogelijk geen rij terug als de rij is bijgewerkt of verwijderd door een andere transactie.
1 = SQL_SCOPE_TRANSACTION. De rij-ID is gegarandeerd geldig gedurende de duur van de huidige transactie.
2 = SQL_SCOPE_SESSION. De rij-ID is gegarandeerd geldig gedurende de duur van de sessie (over transactiegrenzen heen).
COLUMN_NAME sysname Kolomnaam voor elke kolom van de @table_name teruggegeven. Dit veld geeft altijd een waarde terug.
DATA_TYPE smallint ODBC SQL-datatype.
TYPE_NAME sysname Naam van het databron-afhankelijke datatype; Bijvoorbeeld char, varchar, money of text.
PRECISION int Precisie van de kolom op de databron. Dit veld geeft altijd een waarde terug.
LENGTH int Lengte, in bytes, vereist voor het datatype in zijn binaire vorm in de databron, bijvoorbeeld 10 voor char(10),4 voor integer, en 2 voor smallint.
SCALE smallint Schaal van de kolom op de databron. NULL wordt teruggegeven voor datatypes waarvoor schaal niet van toepassing is.
PSEUDO_COLUMN smallint Geeft aan of de kolom een pseudokolom is. SQL Server geeft altijd :1

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

Opmerkingen

sp_special_columns is gelijk aan SQLSpecialColumns in ODBC. De teruggegeven resultaten zijn geordend op .SCOPE

Permissions

Vereist SELECT toestemming voor het schema.

Voorbeelden

Het volgende voorbeeld geeft informatie terug over de kolom die rijen uniek identificeert in de HumanResources.Department tabel.

USE AdventureWorks2022;
GO

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