Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Instrução de inserção + Combinando dados de tabela e variável no gatilho


Você não pode tratar um gatilho como se ele tratasse uma linha de cada vez. Se a inserção ocorrer usando uma cláusula de vários valores ou uma seleção aninhada, o gatilho será acionado uma vez para toda a operação, o que significa que você só lidará com um @UserID arbitrário.

Aqui eu suponho que sua tabela PlaneGPSCoordinates tenha exatamente 5 linhas e que essas são as coordenadas que cada novo usuário obtém.
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

Mas isso levanta a questão, por que copiar as mesmas coordenadas para todos os usuários? Isso é algo que eles vão atualizar com frequência, você só quer colocar alguns valores padrão lá para começar?