sql >> Base de Datos >  >> RDS >> Sqlserver

Insertar declaración + Combinación de datos de tabla y variable en disparador

No puede tratar un disparador como si manejara una fila a la vez. Si la inserción ocurre usando una cláusula de valores múltiples o una selección anidada, el activador se activará una vez durante toda la operación, lo que significa que solo manejará un @UserID arbitrario.

Aquí asumo que su tabla PlaneGPSCoordinates tiene exactamente 5 filas, y que esas son las coordenadas que obtiene cada nuevo usuario.

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

Pero esto plantea la pregunta, ¿por qué copiar las mismas coordenadas para todos los usuarios? ¿Es esto algo que van a actualizar con frecuencia, solo quieres poner algunos valores predeterminados allí para empezar?