Две мысли.
Во-первых, если задействованы значения NULL, ваша логика "где есть" может работать не так, как вам хотелось бы.
Во-вторых, я бы попытался сделать это одним утверждением (из-за свойств ACID реляционных баз данных), а не связываться с транзакциями, блокировками и блокировками и взаимоблокировками их хороших друзей. Работает следующее утверждение:
INSERT tableName (myId, otherColumn)
select @myId, @otherColumn
except select myId, otherColumn
from tableName
Это может не сработать, в зависимости от размера таблицы и / или проблем с индексацией; возможны другие варианты, в зависимости от ваших обстоятельств.