sql >> Databáze >  >> RDS >> Sqlserver

Jak najdu výchozí omezení pomocí INFORMATION_SCHEMA?

Pokud tomu rozumím, omezení výchozí hodnoty nejsou součástí normy ISO, takže se neobjevují v INFORMAČNÍM SCHÉMATU. INFORMAČNÍ SCHÉMA se zdá být nejlepší volbou pro tento druh úlohy, protože je multiplatformní, ale pokud informace nejsou k dispozici, měli byste použít zobrazení katalogu objektů (sys.*) namísto zobrazení systémových tabulek, které jsou v SQL Server zastaralé. 2005 a později.

Níže je téměř stejná odpověď jako @user186476. Vrací název omezení výchozí hodnoty pro daný sloupec. (Pro uživatele, kteří nepoužívají SQL Server, potřebujete název výchozího nastavení, abyste jej mohli zrušit, a pokud výchozí omezení nepojmenujete sami, SQL Server vytvoří nějaký šílený název, například „DF_TableN_Colum_95AFE4B5“. své schéma v budoucnu, vždy explicitně pojmenujte svá omezení!)

-- 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. Jak nastavit časové pásmo na UTC v Play Framework 2.0 pro produkci i testy?

  2. Problémy s generováním seznamu v pythonu a jeho ukládáním do databáze mysql

  3. Pár klíč-hodnota v PostgreSQL

  4. MySQL:Sloupec 'název_sloupce' v místě, kde je klauzule nejednoznačná