Ver Mensaje Individual
  #2  
Antiguo 03-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 27
jachguate Va por buen camino
Cool

en oracle, no podes valerte de un trigger after delete, debido a que la tabla estará "mutante".

No me queda claro si lo que queres es reutilizar el número del borrado, o correr todos los siguientes para utilizar siempre el último número.

Supondré el segundo caso, en el cual, desde delphi podes hacer:

Código Delphi [-]

Procedure TForm1.BorrarTicket(Numero : Integer);

Begin
  db1.StartTransaction;
  try
    query1.sql.clear;
    query1.sql.add('delete ticket where numero = :numero');
    query1.ParamByName('numero').AsInteger := Numero;
    query1.execsql;
    query1.sql.clear;
    query1.sql.add('update ticket set numero = numero - 1 where numero > :numero');
    query1.ParamByName('numero').AsInteger := Numero;
    query1.execsql;
    db1.commit;
  except
    db1.rollback;
    raise;
  end;
end;

Esto correrá todos los tickets superiores a número... manteniendo la correlatividad.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita