En Microsoft SQL Server, conozco la consulta para verificar si existe una restricción predeterminada para una columna y descartar una restricción predeterminada es:
IF EXISTS(SELECT * FROM sysconstraints
WHERE id=OBJECT_ID('SomeTable')
AND COL_NAME(id,colid)='ColName'
AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1)
ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName
Pero debido al error tipográfico en versiones anteriores de la base de datos, el nombre de la restricción podría ser DF_SomeTable_ColName
o DF_SmoeTable_ColName
.
¿Cómo puedo eliminar la restricción predeterminada sin ningún error de SQL? Los nombres de restricción predeterminados no aparecen en la tabla INFORMATION_SCHEMA, lo que hace las cosas un poco más complicadas.
Entonces, algo como 'eliminar la restricción predeterminada en esta tabla / columna' o 'eliminar DF_SmoeTable_ColName
', pero no dé ningún error si no puede encontrarlo.
sql
sql-server
tsql
Robo
fuente
fuente
Respuestas:
Ampliando el código de Mitch Wheat, el siguiente script generará el comando para eliminar la restricción y ejecutarla dinámicamente.
fuente
La publicación de blog de Rob Farley podría ser de ayuda:
Algo como:
fuente
Descubrí que esto funciona y no utiliza combinaciones:
Solo asegúrese de que columnName no tenga corchetes, ya que la consulta busca una coincidencia exacta y no devolverá nada si es [columnName].
fuente
IF @ObjectName IS NOT NULL
antes del comando EXEC[default_object_id])
es 0 . Obtengo un valor NULL .Para soltar la restricción de varias columnas:
fuente
Solución ampliada (tiene en cuenta el esquema de la tabla):
fuente
Descarte todas las restricciones predeterminadas en una base de datos: seguro para el umbral nvarchar (max).
fuente
Ejecute este comando para examinar todas las restricciones:
Se verá algo como esto:
DF__Mytable__Column__[ABC123]
. Entonces puedes simplemente soltar la restricción.fuente
exec sp_helpconstraint 'Roles2016.UsersCRM'
Espero que esto pueda ser útil para quienes tienen un problema similar. En la
ObjectExplorer
ventana, seleccione su base de datos => Tablas, => su tabla => Restricciones. Si el cliente se define en el tiempo de creación de la columna, puede ver el nombre predeterminado de la restricción, incluido el nombre de la columna. luego use:(el nombre de la restricción es solo un ejemplo)
fuente
La siguiente solución eliminará la restricción predeterminada específica de una columna de la tabla
fuente
Tenía algunas columnas que tenían múltiples restricciones predeterminadas creadas, así que creo el siguiente procedimiento almacenado:
fuente
Útil para algunas columnas que tenían múltiples
default constraints or check constraints
creadas:Guión https://stackoverflow.com/a/16359095/206730 modificado
fuente
Siempre genere scripts y revise antes de ejecutar. Debajo del guión
fuente
fuente
Echar un vistazo.
fuente