Ci sono due possibili ragioni per l'aggiornamento del tentativo di foo.a su NULL.
- Esistono righe in foo per le quali non esistono righe corrispondenti nella barra.
- La riga corrispondente nella barra ha bar.x di null.
Quanto segue escluderà gli aggiornamenti a foo se una delle condizioni di cui sopra è vera. In quei casi foo.a rimarrà com'era:
update foo
set a = (select distinct( x ) from bar where bar.y = foo.b )
where exists
(select *
from bar
where bar.y = foo.b
and bar.x is not null);