Dein Problem ist ggf. dass der Join mehr als 1 Zeile erzeugt, d.h., dass artn nicht eindeutig ist.
Das solltest du aber beim Select schon feststellen.

Wenn du nun einen Update schreibst, musst du bedenken, dass du ggf. sowieso für jeden Satz einen Update machst.
Um nur die falschen upzudaten benötigst du die Berechnung nämlich 2x!

update myfile
set feld = (Berechnungs-Select)
where feld <> (Berechnungs-Select)

Für den (Berechnungs-Select) lohnt sich in diesem Fall ggf. schon eine SQL-Function.

Langfristig gebe ich meinem Vorredner recht, dass ein Trigger da eher hilft.