none
Error en FK "No se puede crear la relación 'FK_subcuenta_A_en_B" RRS feed

  • Pregunta

  • Hola a todos

    Tengo una tabla A que tiene

    empresa | codigo_cta | codigo_scta

    y una B que tiene

    empresa  |  codigo  |  descripcion

    B es mi tabla principal con PK_empresa+codigo,  A debe tener FK en B, cuando creo una FK_CUENTA_A_en_B usando empresa+codigo_cta con

    actualizacion en cascada -no hay problemas,  pero si agrego una nueva FK_SUBCUENTA_A_en_B usando usando empresa+codigo_scta con

    actualizacion en cascada me da el error

    ----"No se puede crear la relación 'FK_SUBCUENTA_A_en_B'. 
    Si especifica la restricción FOREIGN KEY 'FK_subcuenta_A_en_B' en la tabla 'A', podrían producirse ciclos o múltiples rutas en cascada.

    Especifique ON DELETE NO ACTION o UPDATE NO ACTION, o bien modifique otras restricciones FOREIGN KEY.
    No se pudo crear la restricción. Consulte los errores anteriores."----

    y reviso ambas tablas y no tienen ni Trigger, ni otras FK desde o hacia exepto la de A en B FK_cuenta_A_en_B usando empresa+codigo_cta

    que si me la ha dejado crear. En todos los casos que he probado le pongo que no cheque y tampoco. ¿ Alguna sugerencia ?. Gracias a todos.

    jueves, 28 de julio de 2011 11:06

Respuestas

  • Por diseño, no puedes crear relaciones con actualización o borrado en cascada que puedan crear ciclos. La solución pasa por no activar la opción de actualización en cascada, o bien implementar la relación a través de triggers.

    Si quieres más información, echa un vistazo a este artículo de la KB de MS: http://support.microsoft.com/kb/321843

    • Marcado como respuesta Ciclano Perez jueves, 28 de julio de 2011 11:23
    jueves, 28 de julio de 2011 11:12

Todas las respuestas

  • Por diseño, no puedes crear relaciones con actualización o borrado en cascada que puedan crear ciclos. La solución pasa por no activar la opción de actualización en cascada, o bien implementar la relación a través de triggers.

    Si quieres más información, echa un vistazo a este artículo de la KB de MS: http://support.microsoft.com/kb/321843

    • Marcado como respuesta Ciclano Perez jueves, 28 de julio de 2011 11:23
    jueves, 28 de julio de 2011 11:12
  • Gracias Carlos, he revisado el link y me lo ha aclarado, solamente una ruta de FK se puede establecer a una misma tabla, asi que las demas "integridades" tendrán que ser con Trigger. Saludos.
    jueves, 28 de julio de 2011 11:23
  • No, no es así. Lo que no puedes es crear varias relaciones entre tablas de forma que creen ese ciclo y que además tengan activada la opción ON UPDATE CASCADE o ON DELETE CASCADE.

    Es decir, que en tu caso, con eliminar la opción ON UPDATE CASCADE de las claves foráneas que estás tratando de crear también valdría.

    jueves, 28 de julio de 2011 11:29