sp_special_columns (Transact-SQL)

S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance

Retourne le jeu optimal de colonnes qui identifie de façon unique une ligne d'une table. Retourne également les colonnes automatiquement mises à jour lorsqu'une transaction met à jour une valeur dans la ligne.

Conventions de la syntaxe Transact-SQL

Syntaxe

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'

Nom de la table utilisée pour retourner les informations du catalogue. @table_name est sysname, sans valeur par défaut. La correspondance des modèles génériques n’est pas prise en charge.

[ @table_owner = ] N’table_owner'

Propriétaire de la table utilisée pour retourner les informations du catalogue. @table_owner est sysname, avec la valeur par défaut NULL. La correspondance des modèles génériques n’est pas prise en charge. Si @table_owner n’est pas spécifié, les règles de visibilité de table par défaut du système de gestion de base de données sous-jacent (SGBD) s’appliquent.

Dans SQL Server, si l’utilisateur actuel est propriétaire d’une table portant le nom spécifié, les colonnes de cette table sont renvoyées. Si @table_owner n’est pas spécifié et que l’utilisateur actuel ne possède pas de table du @table_name spécifié, cette procédure recherche une table des @table_name spécifiées appartenant au propriétaire de la base de données. Si la table existe, ses colonnes sont retournées.

[ @table_qualifier = ] N’table_qualifier'

Nom du qualificateur de table. @table_qualifier est sysname, avec la valeur par défaut NULL. Différents produits SGBD prennent en charge le nommage en trois parties pour les tables (<qualifier>.<owner>.<name>). Dans SQL Server, cette colonne représente le nom de la base de données. Dans certains produits, elle représente le nom du serveur de l'environnement de base de données de la table.

[ @col_type = ] 'col_type'

Le type de colonne. @col_type est char(1), avec la valeur par défaut R.

  • Le type R retourne la colonne ou l’ensemble optimal de colonnes qui, en récupérant des valeurs de la colonne ou des colonnes, permet à n’importe quelle ligne de la table spécifiée d’être identifiée de manière unique. Une colonne peut être un pseudocolumn conçu à cet effet, ou la colonne ou les colonnes d’un index unique pour la table.

  • Le type V retourne la colonne ou les colonnes de la table spécifiée, le cas échéant, qui sont automatiquement mises à jour par la source de données lorsqu’une valeur de la ligne est mise à jour par n’importe quelle transaction.

[ @scope = ] 'scope'

Étendue minimale requise du ROWID. @scope est char(1), avec la valeur par défaut T.

  • L’étendue C spécifie que le ROWID est valide uniquement lorsqu’il est positionné sur cette ligne.
  • L’étendue T spécifie que le ROWID est valide pour la transaction.

[ @nullable = ] 'nullable'

Spécifie si les colonnes spéciales peuvent accepter une NULL valeur. @nullable est char(1), avec la valeur par défaut U.

  • O spécifie des colonnes spéciales qui n’autorisent pas les valeurs Null.
  • U spécifie les colonnes partiellement nullables.

[ @ODBCVer = ] ODBCVer

Version ODBC utilisée. @ODBCVer est int, avec la valeur par défaut 2. Cette valeur indique ODBC version 2.0. Pour plus d’informations sur la différence entre ODBC version 2.0 et ODBC version 3.0, consultez la spécification ODBC pour ODBC SQLSpecialColumns version 3.0.

Valeurs des codes de retour

Aucune.

Jeu de résultats

Nom de la colonne Type de données Description
SCOPE smallint Étendue réelle de l'identificateur de ligne. Peut être 0, 1 ou 2. SQL Server retourne 0toujours . Ce champ retourne toujours une valeur.

0 = SQL_SCOPE_CURROW. La validité du numéro d'identification de ligne est garantie uniquement pendant qu'il est positionné sur cette ligne. Une nouvelle sélection ultérieure à l’aide de l’ID de ligne peut ne pas retourner une ligne si la ligne a été mise à jour ou supprimée par une autre transaction.
1 = SQL_SCOPE_TRANSACTION. La validité du numéro d'identification de ligne est garantie pour la durée de la transaction en cours.
2 = SQL_SCOPE_SESSION. L'identificateur de ligne est valide pour la durée de la session (parmi les limites de transaction).
COLUMN_NAME sysname Nom de colonne pour chaque colonne de la @table_name retournée. Ce champ retourne toujours une valeur.
DATA_TYPE smallint Type de données ODBC SQL.
TYPE_NAME sysname Nom du type de données dépendant de la source de données ; par exemple, char, varchar, money ou text.
PRECISION int Précision de la colonne dans la source de données. Ce champ retourne toujours une valeur.
LENGTH int Longueur, en octets, requise pour le type de données dans sa forme binaire dans la source de données, par exemple, 10 pour char(10), 4 pour entier et 2 pour smallint.
SCALE smallint Échelle de la colonne dans la source de données. NULL est retourné pour les types de données pour lesquels la mise à l’échelle n’est pas applicable.
PSEUDO_COLUMN smallint Indique si la colonne est un pseudocolumn. SQL Server retourne 1toujours :

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

Notes

sp_special_columns équivaut à SQLSpecialColumns ODBC. Les résultats retournés sont classés par SCOPE.

autorisations

Nécessite l’autorisation SELECT sur le schéma.

Exemples

Cet exemple retourne des informations sur la colonne qui identifie les lignes de manière unique dans la table HumanResources.Department.

USE AdventureWorks2022;
GO

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