Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2008
Addicto Addicto is offline
Registrado
 
Registrado: oct 2007
Posts: 2
Poder: 0
Addicto Va por buen camino
Unhappy Error Lock conflict al momento de Delete

Holas, bueno primero que nada saludos a todos, espero que puedan ayudarme en mi consulta pues e visto sus post y sen expertos en la materia.

bueno mi problema es el siguiente, estoy realizando un procedimiento almacenado (en firebird 1.5) el cual envia parametros a un segundo procedimiento mediante el comando EXECUTE PROCEDURE, el problema que tengo es cuando se ejecuta el procedimiento este no ejecuta el delete que lo forma y me muestra el siguiente error

Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Lock conflict on no wait transaction.
Deadlock.
Update conflicts with concurrent update.
SQL Code: -901
IB Error Number: 335544345

bueno este es mi script principal:
Código SQL [-]
CREATE PROCEDURE ACTUALIZA_HAPS(
  NUEVO INTEGER,
  VIEJO INTEGER)
AS
DECLARE VARIABLE CONT INTEGER;
DECLARE VARIABLE ULTIMO INTEGER;
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE PROG_ID INTEGER;
DECLARE VARIABLE ESTADO INTEGER;
BEGIN
CONT=0;
nuevo=1844855;
viejo=1847710;
EXECUTE PROCEDURE elimina_uspc(:nuevo); 
EXECUTE PROCEDURE elimina_uspc(:viejo);
for
   select PROG_ID
   from HAPS_HISTORIAL_USUARIO
   where usp_id in (:NUEVO,:VIEJO)
   group by prog_id
  into rog_id
do
begin
     FOR
        SELECT ID,ESTADO
        FROM HAPS_HISTORIAL_USUARIO
        WHERE PROG_ID = :PROG_ID AND USP_ID IN (:NUEVO,:VIEJO)
     INTO :ID,:ESTADO
     DO
     BEGIN
        if (ESTADO IN (1,2,8) AND :cont = 0) THEN
        BEGIN
             cont = 1;
             ultimo = :id;
        END
        ELSE IF (ESTADO IN (1,2,8) AND :cont = 1) THEN
        BEGIN
            delete from HAPS_HISTORIAL_USUARIO where id = :id;
        END
        ELSE IF (ESTADO IN (4,3,5,6,7,9,10)  AND :cont = 1) THEN
        BEGIN
             cont = 0;
             ultimo = :id;
        END
        ELSE IF (ESTADO IN (4,3,5,6,7,9,10)  AND :cont = 0) THEN
        BEGIN
             delete from HAPS_HISTORIAL_USUARIO  where id = :id;
        END
    end
     
        EXECUTE PROCEDURE INSERT_USPC(:ultimo);
suspend;
END
end
;





y este es el procedimiento el cual me muestra error:
Código SQL [-]
CREATE PROCEDURE ELIMINA_USPC(
  VAR INTEGER)
AS
BEGIN
  delete from USPC_USUARIO_APS_BAJO_CONTROL where usp_id = :var; 
end;


yo creo que el procedimiento principal me debe dejar la base de datos tomada con alguna transaction, pero no encuentro la forma de hacer un commit cuando se ejecuta el delete.

bueno eso, espero puedan ayudarme. Gracias.

Última edición por Addicto fecha: 01-07-2008 a las 16:13:26.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error General Sql Error lock conflict ...deadlock Patricio Varios 1 19-03-2008 14:52:14
Error al momento de Visualizacion ruedabeat2003 Impresión 6 05-03-2008 16:23:37
Lock conflict on no wait transaction gorsan Conexión con bases de datos 2 08-08-2007 09:47:56
Error al momento de guardar Nathan MySQL 3 31-01-2006 01:41:47
error: lock file has... ebeltete SQL 9 11-06-2003 17:15:06


La franja horaria es GMT +2. Ahora son las 22:19:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi