¿Cómo elimino todas las restricciones de clave externa en una tabla en SQL Server 2000 usando T-SQL?¿Cómo elimino todas las restricciones de clave externa en una tabla en Sql Server 2000?
Respuesta
Creo que encontrará que no hay una manera fácil de eliminar las restricciones en una tabla en SQL Server 2000. Dicho esto, hay muchas personas que han escrito scripts que pueden identificar y eliminar/deshabilitar/recrear la clave externa restricciones Un ejemplo es el http://www.mssqltips.com/tip.asp?tip=1376, pero no lo he probado en SQL Server 2000.
EDITAR: Aquí hay otro example que genera secuencias de comandos drop/create para usted.
Si simplemente deshabilitar restricciones es una opción aquí, puede utilizar:
ALTER TABLE myTable NOCHECK CONSTRAINT all
entonces usted puede cambiar de nuevo en el simple uso:
ALTER TABLE myTable WITH CHECK CHECK CONSTRAINT all
Si desea desactivar restricciones en todas las tablas puede utilizar:
-- disable all constraints
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
-- enable all constraints
exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
más en la pregunta: Can foreign key constraints be temporarily disabled using TSQL?
Pero si necesita eliminar las restricciones de manera permanente, puede usar this script posted on databasejurnal.com.
basta con modificar ligeramente para solamente soltar las claves externas
create proc sp_drop_fk_constraints
@tablename sysname
as
-- credit to: douglas bass
set nocount on
declare @constname sysname,
@cmd varchar(1024)
declare curs_constraints cursor for
select name
from sysobjects
where xtype in ('F')
and (status & 64) = 0
and parent_obj = object_id(@tablename)
open curs_constraints
fetch next from curs_constraints into @constname
while (@@fetch_status = 0)
begin
select @cmd = 'ALTER TABLE ' + @tablename + ' DROP CONSTRAINT ' + @constname
exec(@cmd)
fetch next from curs_constraints into @constname
end
close curs_constraints
deallocate curs_constraints
return 0
Aquí van: (No probado en SQL2000, sino que debe estar bien)
Genera 'desactiva':
SELECT 'IF EXISTS (SELECT * FROM sys.foreign_keys
WHERE object_id = OBJECT_ID(N''[dbo].' + FK +''')
AND parent_object_id = OBJECT_ID(N''[dbo].' + PT + '''))
ALTER TABLE ' + PT + ' NOCHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
Genera 'habilita':
SELECT 'ALTER TABLE ' + PT + ' WITH CHECK CHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
Actualización: Ups, pensé que lo querías para todas las tablas :) Solo puedes modificar arriba para tu tabla individual.
- 1. ¿Cómo se eliminan todas las restricciones de clave externa en todas las tablas?
- 2. SQL Server 2000 - consulta de relaciones de clave externa de una tabla
- 3. Oracle todas las referencias de clave externa
- 4. ¿Es posible eliminar todas las restricciones de clave externa en una tabla a la vez en mySQL 5?
- 5. Referenciar restricciones de clave externa y eliminar
- 6. ¿Cómo elimino una restricción de clave externa en SQLAlchemy?
- 7. Crear una clave externa compuesta en SQL Server 2008
- 8. MySQL: ¿cómo puedo ver TODAS las restricciones en una tabla?
- 9. SQL 2008 - Restricciones de clave externa en la vista INFORMATION_SCHEMA
- 10. Servidor SQL: ver todas las dependencias de la clave externa
- 11. Servidor SQL: eliminación de filas con restricciones de clave externa: ¿Pueden las transacciones anular las restricciones?
- 12. ¿Cómo puedo eliminar todas las restricciones de restricciones predeterminadas en una tabla
- 13. ¿Cómo puedo soltar una clave externa en SQL Server?
- 14. ¿Cómo puedo desactivar temporalmente todas las restricciones en una tabla en Firebird 2.1?
- 15. ¿SQLite3 no admite restricciones de clave externa?
- 16. Índice en clave externa o no en SQL Server 2008
- 17. MySQL restricciones de clave externa, eliminar en cascada
- 18. Restricciones diferibles en SQL Server
- 19. Crear clave externa en SQL Server Management Studio
- 20. ¿Cómo elimino una restricción de clave externa solo si existe en el servidor sql?
- 21. clave externa condicional en SQL
- 22. Ver todas las restricciones de clave externa para toda la base de datos MySQL
- 23. SQL Server 2008: averiguar la clave principal/externa en la tabla?
- 24. Deshabilitar todas las restricciones de tabla en Oracle
- 25. Mostrar los nombres de todas las restricciones para una tabla en Oracle SQL
- 26. ¿Cómo puedo generar una tabla temporal llena de fechas en SQL Server 2000?
- 27. SQL Server Management Studio: ¿se agrega confusión de clave externa?
- 28. SQL 2000 UNION TODAS ruinas consulta optimización
- 29. Cómo agregar una fila para todas las filas en otra tabla en SQL Server
- 30. ¿Cómo elimino las variables de tabla en SQL-Server? ¿Debería incluso hacer esto?
Las tablas del sistema son diferentes pero tienen un nombre similar en SQL Server 2000: http://msdn.microsoft.com/en-us/library/aa260604%28v=SQL.80%29.aspx – Emyr