Вы получили неправильные значения, потому что ваш запрос нацелен на основную таблицу без какой-либо фильтрации, поэтому вы получите случайные значения из таблицы.
Вместо этого следует использовать таблицу inserted
, в которой будут храниться последние вставленные значения.
поэтому ваш запрос должен выглядеть следующим образом:
SELECT TOP 1 @DataEntrega = DataEntrega, @IdEncomenda=b.IdEncomenda
FROM inserted AS a
INNER JOIN [dbo].[Encomenda] AS b ON a.[IdEncomenda]= b.[IdEncomenda]
INNER JOIN [dbo].[Visita] AS c ON b.[IdVisita] = c.[IdVisita]
Не уверен, что ВНУТРЕННИЕ СОЕДИНЕНИЯ полезны здесь, но если IdEncomenda уже определена в таблице Entrega
, то я думаю, что вам будет лучше от этих объединений.
Помните, что ваш метод получит только одну строку, поэтому, если вы вставите несколько строк, вы не получите их все по электронной почте. Поэтому вам нужно использовать другие методы, такие как XML
, COALESCE
или STUFF
, чтобы конкретизировать результаты в @BigBody.