Julio 24, 2013
roy
Existen algunas ocasiones en las cuales necesitamos saber cuáles son las restricciones (Contraints) de una tabla de la base de datos. Para obtener esta información podemos usar las tablas del sistema llamadas “INFORMATION_SCHEMA” las cuales contienen la meta data de toda nuestra base de datos.
La tabla de que vamos a ver en particular es INFORMATION_SCHEMA.TABLE_CONSTRAINTS ( más información en http://msdn.microsoft.com/es-es/library/ms181757.aspx), la cual posee las siguientes columnas:
- CONSTRAINT_CATALOG = nombre de la base de datos
- CONSTRAINT_SCHEMA = Nombre del esquema que contiene la restricción.
- CONSTRAINT_NAME = Nombre de la restricción
- TABLE_CATALOG = Nombre del base de datos que contiene la tabla
- TABLE_SCHEMA = Nombre del esquema de la tabla
- TABLE_NAME = Nombre de la tabla
- CONSTRAINT_TYPE = Tipo de la restricción la cual puede ser de 4 tipos CHECK,UNIQUE,PRIMARY KEY,FOREIGN KEY
- IS_DEFERRABLE= determina si la restricción se puede aplazar
- INITIALLY_DEFERRED = determina si la restricción se puede aplazar al iniciar
Con esta información podemos hacer una consulta que determine cuáles son los Constraint en la base de datos:
<pre title="Ejemplo de la Consulta">SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'Table_name'
<pre title="Consulta T-Sql">SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = ProductInventory'
Y este sería el resultado obtenido en sql Server:
Nota: si desean replicar esta consulta pueden hacer usando la base de datos de prueba de Adventure Works la cual se puede descargar en http://msftdbprodsamples.codeplex.com/releases/view/93587
Feliz Día y Feliz Programación 😎