Que pasa si alguien hace algo como:
Código SQL
[-]
update lista_precios
set precio = precio * 1.05;
Me parece poco adecuado evitar esto en la base de datos... pero si querés hacerlo, con algo de ingenio, seguramente se puede.
Por ejemplo, creando una tabla auxiliar del tipo:
Código SQL
[-]
create table auxiliar_no_actualizaciones (
usuario varchar(50) not null,
tabla varchar(50) not null,
fecha timestamp not null
);
En un trigger before update, verificas que no haya un registro para el usuario/tabla en el último segundo. Si lo hay, elevas una excepción. Si no lo había, lo insertas.
Para evitar que se acumulen los registros en dicha tabla, podrías eliminar todos los registros con mas de 2 o 3 segundos de antiguedad en el mismo trigger before.
Hasta luego.