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

So erhalten Sie eine Liste der Spalten mit eindeutigen Einschränkungen in der SQL Server-Datenbank - SQL Server / TSQL-Tutorial Teil 98

Szenario:

Sie arbeiten als SQL Server-Entwickler und werden gebeten, eine Abfrage bereitzustellen, die alle Unique Constraints mit Spalten-, Tabellen- und Schemanamen zurückgeben soll.

Lösung:

Wir können Systemobjekte verwenden, um eine Liste eindeutiger Einschränkungen mit Spalten, Tabellen und Schemanamen zu erhalten. Die folgende Abfrage gibt Ihnen alle eindeutigen Einschränkungen mit Spalten aus der SQL Server-Datenbank zurück.

;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
 
Ich habe die obige Abfrage in der Datenbank ausgeführt und die folgenden Ergebnisse erhalten.
So erhalten Sie eine Spaltenliste mit eindeutigen Einschränkungen in der SQL Server-Datenbank


Video-Demo:So erhalten Sie alle eindeutigen Einschränkungen in der SQL Server-Datenbank mit Spaltennamen