Twoje pierwsze problemy polegają na tym, że nigdy nie powinieneś rozważać pętli przez zestaw rekordów jako pierwszego wyboru. Prawie zawsze jest to zły wybór, tak jak tutaj. Twój następny problem polega na tym, że wyzwala przetwarza cały zestaw rekordów, a nie jeden na raz iz twojego opisu założę się, że napisałeś go, zakładając, że przetwarzałby jeden rekord na raz. Potrzebujesz procesu opartego na zbiorach.
Prawdopodobnie potrzebujesz czegoś takiego w wyzwalaczu, który wstawi wszystkie wstawione kraje, których nie ma jeszcze w tabeli krajów (przy założeniu, że country_Id jest kolumną z tożsamością całkowitą):
Insert country (country_name)
select country_name
from inserted i
where not exists
(select * from country c
where c.country_name = i.country_name)
Możesz również użyć zapisanego procesu zamiast wyzwalacza, aby wstawić do rzeczywistych tabel z tabeli pomostowej.