To View All Constrains of a database

Before Script these are the one line description of information_schema which will use.


  • INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
Returns one row for each FOREIGN KEY constraint in the current database.
  • INFORMATION_SCHEMA.TABLE_CONSTRAINTS
Returns one row for each table constraint in the current database.
  • INFORMATION_SCHEMA.KEY_COLUMN_USAGE
Returns one row for each column that is constrained as a key in the current database.


Script to list down all constraints of a database is: 

SELECT  K_Table = FK.TABLE_NAME ,
        FK_Column = CU.COLUMN_NAME ,
        PK_Table = PK.TABLE_NAME ,
        PK_Column = PT.COLUMN_NAME ,
        Constraint_Name = C.CONSTRAINT_NAME
FROM    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
        INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
        INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
        INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
        INNER JOIN ( SELECT i1.TABLE_NAME ,
                            i2.COLUMN_NAME
                     FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
                            INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
                     WHERE  i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
                   ) PT ON PT.TABLE_NAME = PK.TABLE_NAME
---- optional:
ORDER BY 1 ,
        2 ,
        3 ,
        4;
--WHERE PK.TABLE_NAME='something'WHERE FK.TABLE_NAME='something'
--WHERE PK.TABLE_NAME IN ('one_thing', 'another')
--WHERE FK.TABLE_NAME IN ('one_thing', 'another')



Comments

Popular posts from this blog

Grouping Sets, With Rollup and With Cube example

Adding Page brake aganist group values

To Get All the Names of tables and Databases their data have changed in last 24 Hours And Backup those databases