シナリオ:
SQLServer開発者/SQLServer DBAとして作業しており、テーブルに主キー制約がある場合、または主キー制約がない場合の情報を含むテーブルのリストをデータベースから取得する必要があります。解決策:
SQLサーバーデータベースのシステムビューを使用して、主キー制約の有無にかかわらずテーブルのリストを取得します。use YourDatabaseName go Select T.Table_Catalog as DatabaseName, T.Table_Schema AS TableSchema, T.Table_Name AS TableName, CCU.Column_Name AS ColumnName, TC.Constraint_Name AS ConstraintName, Case When TC.Constraint_Name is not Null Then 'Yes' Else 'No' End as HasPrimaryKeyConstraint From information_schema.tables T left join information_Schema.Table_Constraints TC on T.Table_Catalog=TC.Table_Catalog and T.Table_Schema=TC.Table_Schema and T.Table_Name=TC.Table_Name and TC.Constraint_Type='PRIMARY KEY' left JOIN Information_Schema.constraint_column_usage CCU on TC.Constraint_Name=CCU.Constraint_Name and TC.Table_Name=CCU.Table_Name and T.Table_Type='BASE TABLE'
データベースとテーブルのリストの1つで、主キー制約ありまたは主キー制約なしで上記のコードを実行します。
主キー制約の有無にかかわらずSQLServerデータベースからテーブルのリストを取得する-SQLServer/TSQLチュートリアル
ビデオデモ:SQLServerデータベースで主キー制約がある場合とない場合のすべてのテーブルを取得する方法