sql >> Databasteknik >  >> RDS >> Sqlserver

Hur hittar jag en standardbegränsning med INFORMATION_SCHEMA?

Som jag förstår det är standardvärdesbegränsningar inte en del av ISO-standarden, så de visas inte i INFORMATION_SCHEMA. INFORMATION_SCHEMA verkar vara det bästa valet för denna typ av uppgift eftersom det är plattformsoberoende, men om informationen inte är tillgänglig bör man använda objektkatalogvyerna (sys.*) istället för systemtabellvyer, som är utfasade i SQL Server 2005 och senare.

Nedan är ungefär detsamma som @user186476s svar. Den returnerar namnet på standardvärdebegränsningen för en given kolumn. (För icke-SQL Server-användare behöver du namnet på standarden för att ta bort det, och om du inte namnger standardbegränsningen själv skapar SQL Server ett galet namn som "DF_TableN_Colum_95AFE4B5". För att göra det lättare att ändra ditt schema i framtiden, nämn alltid dina begränsningar uttryckligen!)

-- returns name of a column's default value constraint 
SELECT
    default_constraints.name
FROM 
    sys.all_columns

        INNER JOIN
    sys.tables
        ON all_columns.object_id = tables.object_id

        INNER JOIN 
    sys.schemas
        ON tables.schema_id = schemas.schema_id

        INNER JOIN
    sys.default_constraints
        ON all_columns.default_object_id = default_constraints.object_id

WHERE 
        schemas.name = 'dbo'
    AND tables.name = 'tablename'
    AND all_columns.name = 'columnname'


  1. C#-fel ORA 00907:Höger parentes saknas

  2. SQL Server-transaktionsloggen, del 1:Grunderna i loggning

  3. C# - MySQL vs Microsoft SQL Server

  4. Kryptera användardata för automatisk inloggning till tredje parts system