Saltar al contenido

¿Cómo verificar si existe una restricción en el servidor Sql?

Recabamos por el mundo on line para así traerte la solución para tu inquietud, en caso de alguna difcultad puedes dejarnos tu duda y te contestamos con mucho gusto, porque estamos para servirte.

Solución:

prueba esto:

SELECT
    * 
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
    WHERE CONSTRAINT_NAME ='FK_ChannelPlayerSkins_Channels'

— EDITAR —

Cuando respondí originalmente a esta pregunta, estaba pensando en “Clave externa” porque la pregunta original se refería a encontrar “FK_ChannelPlayerSkins_Channels”. Desde entonces, muchas personas han comentado sobre la búsqueda de otras “restricciones”, aquí hay algunas otras consultas para eso:

--Returns one row for each CHECK, UNIQUE, PRIMARY KEY, and/or FOREIGN KEY
SELECT * 
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE CONSTRAINT_NAME='XYZ'  


--Returns one row for each FOREIGN KEY constrain
SELECT * 
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
    WHERE CONSTRAINT_NAME='XYZ'


--Returns one row for each CHECK constraint 
SELECT * 
    FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS
    WHERE CONSTRAINT_NAME='XYZ'

aquí hay un método alternativo

--Returns 1 row for each CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY, and/or DEFAULT
SELECT 
    OBJECT_NAME(OBJECT_ID) AS NameofConstraint
        ,SCHEMA_NAME(schema_id) AS SchemaName
        ,OBJECT_NAME(parent_object_id) AS TableName
        ,type_desc AS ConstraintType
    FROM sys.objects
    WHERE type_desc LIKE '%CONSTRAINT'
        AND OBJECT_NAME(OBJECT_ID)='XYZ'

Si necesita aún más información sobre restricciones, mire dentro del procedimiento almacenado del sistema master.sys.sp_helpconstraint para ver cómo obtener cierta información. Para ver el código fuente con SQL Server Management Studio, acceda al “Explorador de objetos”. Desde allí, expanda la base de datos “Maestra”, luego expanda “Programabilidad”, luego “Procedimientos almacenados”, luego “Procedimientos almacenados del sistema”. Luego puede encontrar “sys.sp_helpconstraint” y hacer clic con el botón derecho y seleccionar “modificar”. Solo tenga cuidado de no guardar ningún cambio en él. Además, puede usar este procedimiento almacenado del sistema en cualquier tabla usándolo como EXEC sp_helpconstraint YourTableNameHere.

La forma más fácil de verificar la existencia de una restricción (y luego hacer algo como descartarla si existe) es usar la función OBJECT_ID()…

IF OBJECT_ID('dbo.[CK_ConstraintName]', 'C') IS NOT NULL 
    ALTER TABLE dbo.[tablename] DROP CONSTRAINT CK_ConstraintName

OBJECT_ID se puede usar sin el segundo parámetro (‘C’ solo para verificar restricciones) y eso también puede funcionar, pero si el nombre de su restricción coincide con el nombre de otros objetos en la base de datos, puede obtener resultados inesperados.

IF OBJECT_ID('dbo.[CK_ConstraintName]') IS NOT NULL 
    ALTER TABLE dbo.[tablename] DROP CONSTRAINT CK_ConstraintName

OBJECT_ID también se puede usar con otras “restricciones”, como restricciones de clave externa o restricciones de clave principal, etc. Para obtener los mejores resultados, incluya siempre el tipo de objeto apropiado como segundo parámetro para la función OBJECT_ID:

Tipos de objetos de restricción:

  • C = restricción de COMPROBACIÓN
  • D = PREDETERMINADO (restricción o independiente)
  • F = Restricción de CLAVE EXTERNA
  • PK = restricción CLAVE PRIMARIA
  • R = Regla (estilo antiguo, independiente)
  • UQ = restricción ÚNICA

También tenga en cuenta que a menudo se requiere el esquema. El esquema de restricciones generalmente toma el esquema de la tabla principal.

Si no pone sus restricciones (o lo que sea que esté verificando) entre paréntesis cuando usa este método, también puede causar una false negativo: si su objeto usa caracteres inusuales (como .), los corchetes son obligatorios.

Si está buscando otro tipo de restricción, por ejemplo, valores predeterminados, debe usar una consulta diferente (de ¿Cómo encuentro una restricción predeterminada usando INFORMACION_ESQUEMA? respondido por devio). Usar:

SELECT * FROM sys.objects WHERE type = 'D' AND name = @name

para buscar una restricción predeterminada por nombre.

Reuní diferentes verificaciones ‘SI no existe’ en mi publicación Condiciones “DDL ‘SI no existe” para hacer que los scripts SQL se puedan volver a ejecutar”

Reseñas y valoraciones de la guía

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *