LLaver Foraneas como deshabilitarlo???

04/11/2006 - 06:43 por Developers - Dany Acosta | Informe spam
Amigos tengo dos tablas Relacionada por un Campo Cabecera_Factura y Detalle_Factura ambos estan
relacionados por el campo idfactura(FK en Detalle), el problema que tengo es que por necesidad en un
entorno cliente/servidor necesito almacenar primero los detalle_Factura y despues la
cabecera_Factura. Cuando intento hacer eso desde la aplicación o desde el mismo QA me arroja error
de Violacion de FK eso es correcto porque no deberia permitir.

Mi pregunta es existe alguna forma de deshabilitar los FK mientras se realiza las inserciones o
Updates dentro de los Store Procedure que llama la aplicación. y despues habilitarlo al realizar el
termino de la transaccion...

Gracias espero sus prontos comentarios

Dany Acosta - developers

Preguntas similare

Leer las respuestas

#1 BitOne®
04/11/2006 - 15:17 | Informe spam
No puedes deshabilitar las claves ya creadas a menos que las borres y las
vuelvas a creear y en todo caso
si no puedes insertar los registros por violacion de fk es que posiblementes
tengas un constrains y este este mal
definido o estas intentando insertar un dato de manera incorrecta.

en todo caso me parece que este punto es una cuestion de fijarte bien en
como esta todo relacionado en la base de datos
y luego corregir la aplicacion si asi la situacion lo amerita.

Saludos,

BitOne®

"Developers - Dany Acosta" wrote in message
news:%23U8jaQ9$
Amigos tengo dos tablas Relacionada por un Campo Cabecera_Factura y


Detalle_Factura ambos estan
relacionados por el campo idfactura(FK en Detalle), el problema que tengo


es que por necesidad en un
entorno cliente/servidor necesito almacenar primero los detalle_Factura y


despues la
cabecera_Factura. Cuando intento hacer eso desde la aplicación o desde el


mismo QA me arroja error
de Violacion de FK eso es correcto porque no deberia permitir.

Mi pregunta es existe alguna forma de deshabilitar los FK mientras se


realiza las inserciones o
Updates dentro de los Store Procedure que llama la aplicación. y despues


habilitarlo al realizar el
termino de la transaccion...

Gracias espero sus prontos comentarios

Dany Acosta - developers
Respuesta Responder a este mensaje
#2 Alejandro Mesa
04/11/2006 - 16:28 | Informe spam
Dany,

Vamos, no tomes el camino mas facil. De poder, claro que se puede, pero no
se recomienda hacerlo. Por que no nos cuentas un poco mas de por que quieres
hacerlo de esa forma?

Las restricciones de clave foranea pueden ser deshabilitadas usando la
sentencia "alter table", pero debes tener mucho cuidado, primero porque
tendrias que alter la tabla dos veces por transaccion, la una para
deshabilitar la restriccion y la otra para habilitarla. Si esto lo haces
dentro de una transaccion, puedes interferiri con otras transacciones.


AMB

"Developers - Dany Acosta" wrote:

Amigos tengo dos tablas Relacionada por un Campo Cabecera_Factura y Detalle_Factura ambos estan
relacionados por el campo idfactura(FK en Detalle), el problema que tengo es que por necesidad en un
entorno cliente/servidor necesito almacenar primero los detalle_Factura y despues la
cabecera_Factura. Cuando intento hacer eso desde la aplicación o desde el mismo QA me arroja error
de Violacion de FK eso es correcto porque no deberia permitir.

Mi pregunta es existe alguna forma de deshabilitar los FK mientras se realiza las inserciones o
Updates dentro de los Store Procedure que llama la aplicación. y despues habilitarlo al realizar el
termino de la transaccion...

Gracias espero sus prontos comentarios

Dany Acosta - developers

Respuesta Responder a este mensaje
#3 Developers - Dany Acosta
04/11/2006 - 21:03 | Informe spam
Amigo Alejandro, necesito hacer cargas masivas algunas tablas pero
esas tablas tienen clave FK porque dependen de un Padre (Detalle y
Cabecera de Factura), mas o menos hablamos algo de 900,000 Registros en
el detalle y unos 200,000 registros en el Padre.
La idea es ir Insetando en el detalle y este a la vez con un trigger
vaya alimentando una Tabla de Acumulaciones de Cantidades x Fecha. por
eso existe la necesidad de Insertar primeros los detalles y despues las
cabeceras

Alejandro Mesa ha escrito:

Dany,

Vamos, no tomes el camino mas facil. De poder, claro que se puede, pero no
se recomienda hacerlo. Por que no nos cuentas un poco mas de por que quieres
hacerlo de esa forma?

Las restricciones de clave foranea pueden ser deshabilitadas usando la
sentencia "alter table", pero debes tener mucho cuidado, primero porque
tendrias que alter la tabla dos veces por transaccion, la una para
deshabilitar la restriccion y la otra para habilitarla. Si esto lo haces
dentro de una transaccion, puedes interferiri con otras transacciones.


AMB

"Developers - Dany Acosta" wrote:

> Amigos tengo dos tablas Relacionada por un Campo Cabecera_Factura y Detalle_Factura ambos estan
> relacionados por el campo idfactura(FK en Detalle), el problema que tengo es que por necesidad en un
> entorno cliente/servidor necesito almacenar primero los detalle_Factura y despues la
> cabecera_Factura. Cuando intento hacer eso desde la aplicación o desde el mismo QA me arroja error
> de Violacion de FK eso es correcto porque no deberia permitir.
>
> Mi pregunta es existe alguna forma de deshabilitar los FK mientras se realiza las inserciones o
> Updates dentro de los Store Procedure que llama la aplicación. y despues habilitarlo al realizar el
> termino de la transaccion...
>
> Gracias espero sus prontos comentarios
>
> Dany Acosta - developers
>
Respuesta Responder a este mensaje
#4 Maxi
05/11/2006 - 17:11 | Informe spam
Hola, y hago una pregunta, no te es util en este tipo de trabajos tener una
tabla intermedia donde hacer la migracion de los datos y luego por medio de
un trigger en delete y haciendo delete de a n registros lo vas pasando a
produccion?


Saludos

[Microsoft MVP SQL Server]
www.sqlgurus.org
Buenos Aires - Argentina
"Developers - Dany Acosta" wrote in message
news:
Amigo Alejandro, necesito hacer cargas masivas algunas tablas pero
esas tablas tienen clave FK porque dependen de un Padre (Detalle y
Cabecera de Factura), mas o menos hablamos algo de 900,000 Registros en
el detalle y unos 200,000 registros en el Padre.
La idea es ir Insetando en el detalle y este a la vez con un trigger
vaya alimentando una Tabla de Acumulaciones de Cantidades x Fecha. por
eso existe la necesidad de Insertar primeros los detalles y despues las
cabeceras

Alejandro Mesa ha escrito:

Dany,

Vamos, no tomes el camino mas facil. De poder, claro que se puede, pero no
se recomienda hacerlo. Por que no nos cuentas un poco mas de por que
quieres
hacerlo de esa forma?

Las restricciones de clave foranea pueden ser deshabilitadas usando la
sentencia "alter table", pero debes tener mucho cuidado, primero porque
tendrias que alter la tabla dos veces por transaccion, la una para
deshabilitar la restriccion y la otra para habilitarla. Si esto lo haces
dentro de una transaccion, puedes interferiri con otras transacciones.


AMB

"Developers - Dany Acosta" wrote:

> Amigos tengo dos tablas Relacionada por un Campo Cabecera_Factura y
> Detalle_Factura ambos estan
> relacionados por el campo idfactura(FK en Detalle), el problema que
> tengo es que por necesidad en un
> entorno cliente/servidor necesito almacenar primero los detalle_Factura
> y despues la
> cabecera_Factura. Cuando intento hacer eso desde la aplicación o desde
> el mismo QA me arroja error
> de Violacion de FK eso es correcto porque no deberia permitir.
>
> Mi pregunta es existe alguna forma de deshabilitar los FK mientras se
> realiza las inserciones o
> Updates dentro de los Store Procedure que llama la aplicación. y despues
> habilitarlo al realizar el
> termino de la transaccion...
>
> Gracias espero sus prontos comentarios
>
> Dany Acosta - developers
>
Respuesta Responder a este mensaje
#5 Developers - Dany Acosta
05/11/2006 - 23:37 | Informe spam
Queria evitar eso... y hacerlo directo pero veo que no queda otra forma de hacerlo o como dice
el amigo alejandro aplicar los alter table... pero eso me perjudica en las transacciones




Maxi escribió:
Hola, y hago una pregunta, no te es util en este tipo de trabajos tener una
tabla intermedia donde hacer la migracion de los datos y luego por medio de
un trigger en delete y haciendo delete de a n registros lo vas pasando a
produccion?

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida