Istnieją dwa możliwe powody, dla których aktualizacja próbuje zmienić ustawienie foo.a na NULL.
- Istnieją wiersze w foo, dla których nie ma pasujących wierszy w bar.
- Dopasowany wiersz w bar ma bar.x o wartości null.
Poniższe czynności wykluczą aktualizacje bla, jeśli spełniony jest jeden z powyższych warunków. W takich przypadkach foo.a pozostanie bez zmian:
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);