Non puoi trattare un trigger come se gestisse una riga alla volta. Se l'inserimento avviene utilizzando una clausola multi-valore o una selezione nidificata, il trigger si attiverà una volta per l'intera operazione, il che significa che gestirai sempre e solo un @UserID arbitrario.
Qui presumo che la tua tabella PlaneGPSCoordinates abbia esattamente 5 righe e che quelle siano le coordinate che ottiene ogni nuovo utente.
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
Ma questo pone la domanda, perché copiare le stesse coordinate per ogni utente? È qualcosa che aggiorneranno spesso, vuoi solo inserire alcuni valori predefiniti lì per iniziare?