Hola Thomas tambien utilizo un campo
estado el cual m sirve como FLAG o bandera para cambiar de estado '1' que significaria disponible, que es por defecto, a '0' no disponible
en mi opinión no utilizaría un trigger para realizar la actualización del campo
estado prueba con esto:
El siguiente SP "actualiza_estado" realiza la actualización del estado de '1' a '0'
Código:
CREATE PROCEDURE `actualiza_estado`(OUT estado VARCHAR(20))
BEGIN
UPDATE libros SET estado = '0'
WHERE libros.cod_libro = '1';
END
CALL actualiza_estado(@a);
Recuerda que el estado por defecto es 1 que significa DISPONIBLE