Nie możesz traktować wyzwalacza tak, jakby obsługiwał jeden wiersz naraz. Jeśli wstawianie odbywa się przy użyciu klauzuli wielowartościowej lub zagnieżdżonego wyboru, wyzwalacz uruchomi się raz na całą operację, co oznacza, że obsłużysz tylko jeden dowolny @UserID.
Tutaj zakładam, że twoja tabela PlaneGPSCoordinates ma dokładnie 5 wierszy i że są to współrzędne, które otrzymuje każdy nowy użytkownik.
CREATE TRIGGER dbo.Matching
ON dbo.UserInfo
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.MatchingInformation(GPS1, GPS2, UserID)
SELECT p.GPS1, p.GPS2, i.UserID
FROM dbo.PlaneGPSCoordinates AS p
CROSS JOIN inserted AS i;
END
GO
Ale to nasuwa pytanie, po co kopiować te same współrzędne dla każdego użytkownika? Czy jest to coś, co będą często aktualizować, po prostu chcesz umieścić tam jakieś domyślne wartości na początek?