Problema:
Quiere encontrar los nombres de las restricciones en una tabla en SQL Server.
Ejemplo:
Queremos mostrar los nombres de las restricciones en la tabla student
.
Solución:
SELECT TABLE_NAME, CONSTRAINT_TYPE,CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME=’student’;
Aquí está el resultado:
NOMBRE_TABLA | CONSTRAINT_TYPE | CONSTRAINT_NAME |
---|---|---|
estudiante | CLAVE PRINCIPAL | PK__estudiante__3213E83F357C7D1D |
estudiante | ÚNICO | UQ__estudiante__24E2EDD2AC2A7D87 |
estudiante | COMPROBAR | CK__estudiante__edad__4E88ABD4 |
estudiante | LLAVE EXTRANJERA | FK__estudiante__país__4F7CD00D |
Discusión:
Utilice la vista table_constraints
en el information_schema
esquema. La columna table_name
le da el nombre de la tabla en la que se define la restricción y la columna constraint_name
contiene el nombre de la restricción. La columna constraint_type
indica el tipo de restricción:PRIMARY KEY
para el tipo de clave principal, FOREIGN KEY
para el tipo de clave foránea, UNIQUE
para los valores únicos y CHECK
para la comprobación de restricciones.
Por ejemplo, la clave principal en el student
la tabla tiene el nombre de restricción PK_student_3213E83F357C7D1D
. El constraint_type
columna le brinda información sobre el tipo de cada restricción; para la clave principal, es PRIMARY KEY
. El table_name
columna en esta vista indica qué tabla contiene esta restricción.
Sin embargo, si desea seleccionar DEFAULT
restricción de una base de datos, use esta consulta a continuación.
SELECT c.name, c.definition FROM sys.default_constraints c JOIN sys.objects o ON o.object_id = c.parent_object_id WHERE o.name ='student';
Aquí está el resultado:
nombre | definición |
---|---|
DF__student__name__4D94879B | ("desconocido") |
El nombre del DEFAULT
la restricción se almacena en el nombre de la columna, pero el valor está en la columna definition
. Unirse a las vistas sys.default_constraint
s y sys.objects
nos permite seleccionar solo los datos de una tabla dada (en nuestro ejemplo, la tabla student
) con el uso de la cláusula WHERE. El nombre de la restricción contiene el nombre de la tabla (student
) y el nombre de la columna (name
).