Deshabilitar Relaciones

06/05/2004 - 11:47 por Jesús | Informe spam
Hola :
Estoy realizando un proceso para borrar datos de una tabla
a la cual referencian muchas otras tablas mediante FK.
Después de muchas pruebas he visto que la solución que
menos tiempo me tarda es deshabilitar las relaciones
mientras se borra y volver a habilitarlas otra vez (ALTER
TABLE tabla NOCHECK|CHEK). La disminución de tiempo ha
sido abismal. Mi pregunta se refiere a que si hay forma de
que esa deshabilitación de restricciones se pueda hacer
solo para el borrado ya que durante el tiempo que se está
borrando se pueden insertar datos que violan la integridad
referencial. Quiero evitar que mientras se está borrando
se inserten datos incoherentes. ¿Es posible? ¿Cómo?.
Gracias de antemano.
Jesús
 

Leer las respuestas

#1 Adrian D. Garcia
06/05/2004 - 13:10 | Informe spam
No se puede hacer lo que dices. Las restricciones se aplican en todos los
casos, o no se aplican.
Quizas puedas deshabilitar las restricciones y aplicar las mismas reglas de
verificacion en triggers/disparadores de INSERT sobre la tabla. Con lo cual
las eliminaciones se ejecutaran con buena performance pero las inserciones
se ejecutaran con peor performance que si estuvieran las restricciones
definidas ya que realizar la verificacion de claves foraneas en un trigger
es mucho mas costoso que si se realiza por medio de una restriccion.

Saludos

Adrian D. Garcia
NDSoft
MCSD
"Jesús" escribió en el mensaje
news:8fe901c4334f$287425f0$
Hola :
Estoy realizando un proceso para borrar datos de una tabla
a la cual referencian muchas otras tablas mediante FK.
Después de muchas pruebas he visto que la solución que
menos tiempo me tarda es deshabilitar las relaciones
mientras se borra y volver a habilitarlas otra vez (ALTER
TABLE tabla NOCHECK|CHEK). La disminución de tiempo ha
sido abismal. Mi pregunta se refiere a que si hay forma de
que esa deshabilitación de restricciones se pueda hacer
solo para el borrado ya que durante el tiempo que se está
borrando se pueden insertar datos que violan la integridad
referencial. Quiero evitar que mientras se está borrando
se inserten datos incoherentes. ¿Es posible? ¿Cómo?.
Gracias de antemano.
Jesús

Preguntas similares