sql >> Database >  >> RDS >> Sqlserver

Hoe een lijst met kolommen met unieke beperkingen in SQL Server-database te krijgen - SQL Server / TSQL-zelfstudie, deel 98

Scenario:

U werkt als SQL Server-ontwikkelaar, u wordt gevraagd een query op te geven die alle unieke beperkingen met kolommen, tabel en schemanaam moet retourneren.

Oplossing:

We kunnen systeemobjecten gebruiken om een ​​lijst met unieke beperkingen met kolommen, tabellen en schemanaam te krijgen. De onderstaande query geeft u alle unieke beperkingen met kolommen uit de SQL Server-database.

;WITH CTE_UQ
AS (
    SELECT t.Table_Schema AS TableSchema
        ,t.table_name AS TableName
        ,c.column_name AS ColumnName
        ,t.constraint_name AS UniqueConstraintName
        ,t.constraint_type AS ConstraintType
    FROM information_schema.table_constraints t
    LEFT JOIN information_schema.key_column_usage c 
    ON t.constraint_catalog = c.constraint_catalog
        AND t.constraint_schema = c.constraint_schema
        AND t.constraint_name = c.constraint_name
    WHERE t.constraint_type = 'UNIQUE'
    )
SELECT TableSchema
    ,TableName
    ,UniqueConstraintName
    ,ConstraintType
    ,stuff((
            SELECT ',' + ColumnName
            FROM CTE_UQ i
            WHERE i.TableSchema = o.TableSchema
                AND i.TableName = o.TableName
                AND i.UniqueConstraintName = o.UniqueConstraintName
            FOR XML path('')
            ), 1, 1, '') UniqueColumnList
FROM CTE_UQ o
GROUP BY TableSchema
    ,TableName
    ,UniqueConstraintName
    ,ConstraintType
 
Ik heb bovenstaande query uitgevoerd in de database en kreeg onderstaande resultaten.
Kolomlijst krijgen met unieke beperkingen in SQL Server-database


Videodemo:alle unieke beperkingen in SQL Server-database met kolomnamen krijgen

  1. Hoe current_date werkt in PostgreSQL

  2. Waarden selecteren die aan verschillende voorwaarden voldoen op verschillende rijen?

  3. Een database importeren en exporteren via phpMyAdmin ('Toegang geweigerd maak database db_name' fout)

  4. Vreemde sleutels, blokkeren en updateconflicten