Uw eerste probleem is dat u het doorlopen van een recordset nooit als eerste keuze moet beschouwen. Het is bijna altijd de verkeerde keuze zoals hier. Je volgende probleem is dat triggers de hele set records niet één tegelijk verwerken en uit je beschrijving wed ik dat je het schreef in de veronderstelling dat het één record tegelijk zou verwerken. Je hebt een set-based proces nodig.
Waarschijnlijk heb je iets als dit nodig in je trigger, waarbij alle landen worden ingevoegd die nog niet in de landentabel staan (hierbij wordt ervan uitgegaan dat country_Id een integer-identiteitskolom is):
Insert country (country_name)
select country_name
from inserted i
where not exists
(select * from country c
where c.country_name = i.country_name)
Je zou ook een opgeslagen proc kunnen gebruiken in plaats van een trigger om in de echte tabellen van de staging-tabel in te voegen.