Forse hai ragione tu...(purtroppo non ho come provarlo uff)

Quindi dovrebbe venire così?
Codice PHP:
CREATE TRIGGER OR REPLACE upd_tr
AFTER UPDATE ON prenotazioni
FOR EACH ROW
BEGIN
SELECT id_viaggio
data_inizio
FROM DATEDISPONIBILI
WHERE id_viaggio 
= new.id_viaggio
AND data_inizio = new.data_inizio
UPDATE DATEDISPONIBILI
SET posti_disponibili_rimasti 
posti_disponibili_rimasti 1
WHERE id_viaggio 
= new.id_viaggio AND data_inizio = new.data_inizio
UPDATE DATEDISPONIBILI
SET posti_disponibili_rimasti 
posti_disponibili_rimasti 1
WHERE id_viaggio 
old.id_viaggio AND data_inizio old.data_inizio
END 
e così va pure bene?

Codice PHP:
CREATE TRIGGER OR REPLACE upd_tr
AFTER UPDATE ON prenotazioni
FOR EACH ROW
BEGIN
IF (id_viaggio = (SELECT id_viaggio
                       FROM DATEDISPONIBILI
                       WHERE id_viaggio 
= new.id_viaggio)
    AND 
data_inizio = (SELECT data_inizio
                             FROM DATEDISPONIBILI
                             WHERE data_inizio 
= new.data_inizio)
    )
THEN
UPDATE DATEDISPONIBILI
SET posti_disponibili_rimasti 
posti_disponibili_rimasti 1
WHERE id_viaggio 
= new.id_viaggio AND data_inizio = new.data_inizio
UPDATE DATEDISPONIBILI
SET posti_disponibili_rimasti 
posti_disponibili_rimasti 1
WHERE id_viaggio 
old.id_viaggio AND data_inizio old.data_inizio
END 
IF
END 
e poi dove devo inserire "old.data_inizio debba essere <> new.data_inizio"?
Scusate per tutte ste domande