Có hai lý do có thể khiến bản cập nhật cố gắng chuyển thành NULL.
- Có các hàng trong foo mà không có hàng nào phù hợp trong thanh.
- Hàng phù hợp trong thanh có bar.x rỗng.
Phần sau sẽ loại trừ các cập nhật cho foo nếu một trong hai điều kiện trên là đúng. Trong những trường hợp đó, foo.a sẽ vẫn như cũ:
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);