sql >> Databasteknik >  >> RDS >> Sqlserver

Insert Statement + Kombinera tabelldata och variabel i trigger

Du kan inte behandla en trigger som om den hanterar en rad i taget. Om infogningen sker med hjälp av en sats med flera värden eller en kapslad markering, kommer utlösaren att aktiveras en gång för hela operationen, vilket innebär att du bara kommer att hantera ett godtyckligt @UserID.

Här antar jag att din PlaneGPSCordinates-tabell har exakt 5 rader, och att det är koordinaterna som varje ny användare får.

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

Men detta väcker frågan, varför kopiera samma koordinater för varje användare? Är detta något de kommer att uppdatera ofta, vill du bara lägga in några standardvärden där till att börja med?




  1. Php/MySql-arraysökning med ã, š, é, ë, ú, ü, í, ž

  2. Hur installerar man Postgres-tillägg när databasen skapas?

  3. Oracle:Använder subquery i en trigger

  4. Android Sqlite prestanda