¿Cómo puedo eliminar todas las restricciones predeterminadas que pertenecen a una tabla en particular en SQL 2005?¿Cómo puedo eliminar todas las restricciones de restricciones predeterminadas en una tabla
Respuesta
Una solución from a search: (editado por restricciones predeterminadas)
SET NOCOUNT ON
DECLARE @constraintname SYSNAME, @objectid int,
@sqlcmd VARCHAR(1024)
DECLARE CONSTRAINTSCURSOR CURSOR FOR
SELECT NAME, object_id
FROM SYS.OBJECTS
WHERE TYPE = 'D' AND @objectid = OBJECT_ID('Mytable')
OPEN CONSTRAINTSCURSOR
FETCH NEXT FROM CONSTRAINTSCURSOR
INTO @constraintname, @objectid
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT @sqlcmd = 'ALTER TABLE ' + OBJECT_NAME(@objectid) + ' DROP CONSTRAINT ' + @constraintname
EXEC(@sqlcmd)
FETCH NEXT FROM CONSTRAINTSCURSOR
INTO @constraintname, @objectid
END
CLOSE CONSTRAINTSCURSOR
DEALLOCATE CONSTRAINTSCURSOR
cambiando OBJECT_NAME a PARENT_OBJECT_NAME funcionó bien gracias. –
Buena consulta. Me gustaría hacer una corrección sin embargo. La declaración del cursor debe ser: SELECT NAME, parent_object_id FROM SYS.OBJECTS WHERE TYPE = 'D' AND parent_object_id = OBJECT_ID ('Mytable') –
Justo ¿Por qué quieres hacer esto? La caída de restricciones es una acción bastante drástica y afecta a todos los usuarios, no solo a su proceso. Tal vez su problema se puede resolver de otra manera. Si no eres el dba del sistema, deberías pensar muy bien si deberías hacer esto. (Por supuesto, en la mayoría de los sistemas, un dba no le permitiría a nadie más los permisos para hacer tal cosa.)
Estoy usando varios campos que necesitan soportar Unicode y no encuentro ninguna otra forma de haciendo esto. por lo tanto, estoy cambiando el tipo de datos de las columnas y en proceso eliminando las restricciones y volviendo a crearlas ....... –
Sé que esto es viejo, pero lo encontré cuando busqué en Google. una solución que funciona para mí en SQL 2008 (no estoy seguro de 2005) sin tener que recurrir a los cursores es a continuación:
declare @sql nvarchar(max)
set @sql = ''
select @sql = @sql + 'alter table YourTable drop constraint ' + name + ';'
from sys.default_constraints
where parent_object_id = object_id('YourTable')
AND type = 'D'
exec sp_executesql @sql
Esto solo borra la primera restricción encontrada (al menos eso es lo que me hizo). Tienes que iterar a través de todos ellos. –
@Ioana Marcu: funciona para mí en una base de datos SQL 2008. Obtengo una cadena similar a la siguiente para la tabla llamada "Cuenta" después de la tabla Account drop constraint DF__Account__Account__4865BE2A; alter table Account Drop constraint DF__Account__Account__4959E263 es decir, un montón de sentencias drop concatenadas – PabloInNZ
- 1. MySQL: ¿cómo puedo ver TODAS las restricciones en una tabla?
- 2. Grails restricciones predeterminadas
- 3. Deshabilitar todas las restricciones de tabla en Oracle
- 4. Mostrar las restricciones en una tabla
- 5. ¿Cómo puedo desactivar temporalmente todas las restricciones en una tabla en Firebird 2.1?
- 6. Mostrar los nombres de todas las restricciones para una tabla en Oracle SQL
- 7. PostgreSQL - deshabilitar las restricciones
- 8. ¿Cómo elimino todas las restricciones de clave externa en una tabla en Sql Server 2000?
- 9. Eliminar restricciones de orientación programáticamente
- 10. ¿Cómo se eliminan todas las restricciones de clave externa en todas las tablas?
- 11. Igualdad en las restricciones
- 12. Eliminar una fila de SQL ignorando todas las claves y restricciones foráneas
- 13. ¿Cómo se muestran las restricciones únicas de una tabla en MySQL?
- 14. ¿Es posible eliminar todas las restricciones de clave externa en una tabla a la vez en mySQL 5?
- 15. Escriba restricciones en todas las instancias familiares de tipo
- 16. ¿Cómo agregar restricciones "al eliminar cascada"?
- 17. Necesito eliminar las restricciones únicas que desconozco los nombres de
- 18. Referenciar restricciones de clave externa y eliminar
- 19. Derby: restricciones
- 20. ¿Cómo verificar las restricciones entre los elementos en una lista/es esta Programación de Restricciones?
- 21. MySQL restricciones de clave externa, eliminar en cascada
- 22. Scripts de T-SQL para copiar todas las restricciones de la tabla
- 23. Truncar todas las tablas (la mayoría de las cuales tienen restricciones). Cómo colocarlos temporalmente
- 24. Restricciones diferibles en SQL Server
- 25. Servidor SQL: eliminación de filas con restricciones de clave externa: ¿Pueden las transacciones anular las restricciones?
- 26. ¿Hay alguna manera de obtener las restricciones de una tabla en SQLite?
- 27. Eliminar el diseño automático (restricciones) en el Generador de interfaces
- 28. añadir restricciones en phpMyAdmin
- 29. Oracle - elimine las restricciones de la tabla sin descartar las tablas
- 30. Desactivar restricciones temporalmente
He borrado mi respuesta ya que estoy 100% seguro y no soy capaz de probar. – Peter
Tu propia solución parece estar bien, ¿no? – Peter