Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie finde ich eine Standardeinschränkung mit INFORMATION_SCHEMA?

So wie ich es verstehe, sind Standardwertbeschränkungen nicht Teil des ISO-Standards, daher erscheinen sie nicht in INFORMATION_SCHEMA. INFORMATION_SCHEMA scheint die beste Wahl für diese Art von Aufgabe zu sein, da es plattformübergreifend ist, aber wenn die Informationen nicht verfügbar sind, sollte man die Objektkatalogansichten (sys.*) anstelle der Systemtabellenansichten verwenden, die in SQL Server veraltet sind 2005 und später.

Unten ist so ziemlich das gleiche wie die Antwort von @ user186476. Sie gibt den Namen der Standardwertbeschränkung für eine bestimmte Spalte zurück. (Für Nicht-SQL Server-Benutzer benötigen Sie den Namen der Standardeinstellung, um sie zu löschen, und wenn Sie die Standardbeschränkung nicht selbst benennen, erstellt SQL Server einen verrückten Namen wie "DF_TableN_Colum_95AFE4B5". Um es einfacher zu ändern Ihr Schema in Zukunft, benennen Sie Ihre Constraints immer explizit!)

-- 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'