sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo encontrar el nombre de una restricción en SQL Server

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 ).