Hola afarias,
Tendrías que quitarle el auto_increment al id (nose si te conviene mucho).
Este es el código que se supone que lo haría (la verdad no lo he pensado mas a fondo)
Código:
drop schema if exists ejemplo;
create schema ejemplo;
use ejemplo;
create table nombres (
id int primary key /*auto_increment*/,
nombre varchar(50)
);
insert into nombres values(1,'andres');
insert into nombres values(2,'felipe');
insert into nombres values(3,'arias');
delimiter $$
create trigger id_org after delete on nombres
for each row
begin
declare id_ini int default 0;
set id_ini=old.id;
repeat
update nombres set id=id-1 where id=id_ini;
set id_ini=id_ini+1;
until id_ini=(select count(id) from nombres) end repeat;
end $$
delimiter ;
delete from nombres where id=2;
El error que reporta es que no se puede actualizar una tabla mientras está siendo usada por un trigger. Le daré unas cuantas vueltas al cogote y te comento si se me ocurre algo.
¡Un saludo!