Det finns två möjliga anledningar till att uppdateringen försöker foo.a till NULL.
- Det finns rader i foo för vilka det inte finns några matchande rader i stapel.
- Den matchande raden i stapel har bar.x av null.
Följande kommer att utesluta uppdateringar till foo om något av ovanstående villkor är sant. I dessa fall kommer foo.a att förbli som det var:
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);