Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problema con trigger que inserte registros en una tabla al tratar de ingresar en otra

Estas en el tema de Problema con trigger que inserte registros en una tabla al tratar de ingresar en otra en el foro de Bases de Datos General en Foros del Web. Hola a todos! Les escribo para ver si alguien me ayuda. Tengo que crear un trigger que me controle las garantias dadas para prestamos para ...
  #1 (permalink)  
Antiguo 19/04/2009, 18:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 19
Antigüedad: 16 años, 6 meses
Puntos: 0
Problema con trigger que inserte registros en una tabla al tratar de ingresar en otra

Hola a todos!

Les escribo para ver si alguien me ayuda. Tengo que crear un trigger que me controle las garantias dadas para prestamos para tipo hipotecario y normales.

El problema es que en el diseño de la base de datos hay una tabla Prestamo tiene una relacion de herencia de las que salen las 2 tablas de los 2 tipos de prestamos.

Al momento de tratar de crear el trigger para insercion de prestamos hipotecarios primero debo ingresar un registro en la tabla prestamos y despues asociarle a ese codigo el codigo del prestamo tipo hipotecario, el codigo con el que estaba intentando hacer esto fue:


[CREATE TRIGGER CUATRO
ON PRESTAMOHIPOTECARIO
FOR INSERT, UPDATE AS
BEGIN
DECLARE codPrest int, fechaTope int
set fechaTope =FECHATOPEMENSUAL
insert into PRESTAMO (FECHATOPEMENSUAL) values (fechaTope)
select codPrest=CODPRESTAMO from PRESTAMO
UPDATE inserted set CODPRESTAMO=codPrest
go]
Nose como implementar que por lo menos el trigger cree un registro en la tabla prestamos cuando se quiera ingresar un prestamo hipotecario... Por favor ayuda
  #2 (permalink)  
Antiguo 20/04/2009, 05:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con trigger que inserte registros en una tabla al tratar de ingre

Es un problema de secuencia lógica. No puedes hacer un INSERT a PRESTAMOHIPOTECARIO sin que primero hagas un INSERT a PRESTAMO por cuestiones de integridad referencial.
En otras palabras, existen tres soluciones:
1) Hacer dos INSERT para realizar el trabajo: uno a PRESTAMOS primero y otro a PRESTAMOHIPOTECARIO.
2. Crear las dos inserciones en un STORE PROCEDURE, de modo de poder realizar todo en una sola transacción y evitar problemas de bloqueos por terceros (concurrencia de procesos).
3. Desactivar la verificacion de claves foráneas miewntras dure el proceso de inserción, caso en el cual deberás manejar la transacción desde la aplicación.

¿Qué eliges?

Te recalco lo que te dije desde el principio: No puedes hacer el INSERT como lo estás planeando. Si PRESTAMOHIPOTECARIO depende de PRESTAMO, la priemra inserción debe ser siempre a PRESTAMO.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:30.