sql >> データベース >  >> RDS >> Sqlserver

SQLServerデータベースで一意の制約を持つ列のリストを取得する方法-SQLServer/TSQLチュートリアルパート98

    シナリオ:

    SQL Server開発者として働いている場合、列、テーブル、スキーマ名を含むすべての一意性制約を返すクエリを提供するように求められます。

    解決策:

    システムオブジェクトを使用して、列、テーブル、スキーマ名を持つ一意の制約のリストを取得できます。以下のクエリは、SQLServerデータベースの列を持つすべての一意の制約を返します。

    ;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
     
    データベースで上記のクエリを実行したところ、以下の結果が得られました。
    SQLServerデータベースで一意の制約を持つ列リストを取得する方法


    ビデオデモ:列名を使用してSQLServerデータベースですべての一意の制約を取得する方法

    1. Oracleのブールフィールド

    2. OracleDatabase20cの新機能

    3. SQL ServerデータベースをMySQLにエクスポートする方法は?

    4. C#:ユーザー定義型をOracleストアドプロシージャに渡す