Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Insérer une instruction + Combinaison des données de la table et de la variable dans le déclencheur

Vous ne pouvez pas traiter un déclencheur comme s'il gérait une ligne à la fois. Si l'insertion se produit à l'aide d'une clause multi-valeurs ou d'une sélection imbriquée, le déclencheur se déclenchera une fois pour toute l'opération, ce qui signifie que vous ne gérerez qu'un seul @UserID arbitraire.

Ici, je suppose que votre table PlaneGPSCoordinates a exactement 5 lignes, et que ce sont les coordonnées que chaque nouvel utilisateur obtient.

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

Mais cela soulève la question, pourquoi copier les mêmes coordonnées pour chaque utilisateur ? Est-ce quelque chose qu'ils vont mettre à jour souvent, vous voulez juste mettre quelques valeurs par défaut pour commencer ?