dal manuale le funzioni di controllo (ad esempio IF) si possono usare solo nelle select?

io avrei necessità di usare un if in un update, qualcosa del tipo

Codice PHP:
UPDATE
magazzino_oggetti
INNER JOIN magazzino_movimenti ON 
magazzino_oggetti.id magazzino_movimenti.idOggetto )
SET magazzino_oggetti.giacenza = ( magazzino_oggetti.giacenza magazzino_movimenti.quantita )
WHERE magazzino_movimenti.id '$idMovimento' 
nel caso sia uno scarico, ma se è un carico dovrei fare l'addizione invece che la sottrazione..
il tipo di movimento lo definisco con la colonna tipo ENUM('0','1') nella tabella magazzino_movimento (0 = scarico, 1 = carico)

però, la query che ho scritto non funzionano, mi crasha proprio nel IF
Codice PHP:
//prova 1
UPDATE
magazzino_oggetti
INNER JOIN magazzino_movimenti ON 
magazzino_oggetti.id magazzino_movimenti.idOggetto )
IF(
magazzino_movimenti.tipo '0'SET magazzino_oggetti.giacenza = ( magazzino_oggetti.giacenza magazzino_movimenti.quantita ), SET magazzino_oggetti.giacenza = ( magazzino_oggetti.giacenza magazzino_movimenti.quantita ))
WHERE magazzino_movimenti.id '$idMovimento'

//prova 2
UPDATE
magazzino_oggetti
INNER JOIN magazzino_movimenti ON 
magazzino_oggetti.id magazzino_movimenti.idOggetto )
SET magazzino_oggetti.giacenza = IF(magazzino_movimenti.tipo '0'magazzino_oggetti.giacenza magazzino_oggetti.quantitamagazzino_oggetti.giacenza magazzino_oggetti.quantita)
WHERE magazzino_movimenti.id '$idMovimento' 

..il tutto sarebbe risolvibile con un if nel codice php, ma vorrei farlo nella query...