sql >> Database >  >> RDS >> Sqlserver

Hoe vind ik een standaardbeperking met INFORMATION_SCHEMA?

Zoals ik het begrijp, maken standaardwaardebeperkingen geen deel uit van de ISO-standaard, dus verschijnen ze niet in INFORMATION_SCHEMA. INFORMATION_SCHEMA lijkt de beste keuze voor dit soort taken omdat het platformonafhankelijk is, maar als de informatie niet beschikbaar is, moet men de objectcatalogusweergaven (sys.*) gebruiken in plaats van systeemtabelweergaven, die in SQL Server zijn verouderd 2005 en later.

Hieronder is vrijwel hetzelfde als het antwoord van @user186476. Het retourneert de naam van de standaardwaardebeperking voor een bepaalde kolom. (Voor niet-SQL Server-gebruikers, je hebt de naam van de standaard nodig om deze te verwijderen, en als je de standaardbeperking niet zelf een naam geeft, maakt SQL Server een gekke naam zoals "DF_TableN_Colum_95AFE4B5". Om het gemakkelijker te maken om te veranderen uw schema in de toekomst, benoem altijd expliciet uw beperkingen!)

-- 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. BoneCP correct gebruik

  2. Hoe parallelle plannen opstarten - Deel 5

  3. Oracle RAC en sequenties

  4. Oracle-client ORA-12541:TNS:geen luisteraar