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.