web-dev-qa-db-fra.com

SQL Server: découvrez la valeur par défaut d'une colonne avec une requête

Comment connaître la valeur par défaut d'une colonne d'une table à l'aide d'une requête SQL?

En utilisant cette procédure stockée:

sp_columns @tablename 

J'obtiens des informations sur les colonnes d'une table particulière mais la valeur par défaut des colonnes est manquante, comment puis-je l'obtenir?

30
zad

Vous pouvez trouver la définition stockée avec ce qui suit (n'oubliez pas d'ajuster le nom de la colonne et du tableau pour trouver ceux qui correspondent à votre environnement!)

SELECT object_definition(default_object_id) AS definition
FROM   sys.columns
WHERE  name      ='colname'
AND    object_id = object_id('dbo.tablename')
59
Martin Smith

Utilisation:

   SELECT so.name AS table_name, 
          sc.name AS column_name, 
          sm.text AS default_value
     FROM sys.sysobjects so
     JOIN sys.syscolumns sc ON sc.id = so.id
LEFT JOIN sys.syscomments sm ON sm.id = sc.cdefault
    WHERE so.xtype = 'U' 
      AND so.name = @yourtable
 ORDER BY so.[name], sc.colid
15
OMG Ponies

J'utilise INFORMATION_SCHEMA table comme celle-ci:

SELECT 
    TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE
  TABLE_SCHEMA = @SchemaName 
  AND TABLE_NAME = @TableName
  AND COLUMN_NAME = @ColumnName;
13
shA.t