Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Insert Statement + Łączenie danych tabeli i zmiennej w wyzwalaczu

Nie możesz traktować wyzwalacza tak, jakby obsługiwał jeden wiersz naraz. Jeśli wstawianie odbywa się przy użyciu klauzuli wielowartościowej lub zagnieżdżonego wyboru, wyzwalacz uruchomi się raz na całą operację, co oznacza, że ​​obsłużysz tylko jeden dowolny @UserID.

Tutaj zakładam, że twoja tabela PlaneGPSCoordinates ma dokładnie 5 wierszy i że są to współrzędne, które otrzymuje każdy nowy użytkownik.

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

Ale to nasuwa pytanie, po co kopiować te same współrzędne dla każdego użytkownika? Czy jest to coś, co będą często aktualizować, po prostu chcesz umieścić tam jakieś domyślne wartości na początek?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przechowywanie plików w SQL Server

  2. SQL Group BY, Top N pozycji dla każdej grupy

  3. Przenieś dane z jednej bazy danych do innej bazy danych

  4. SQL :usuń ostatni przecinek w łańcuchu

  5. Instalacja klastra pracy awaryjnej serwera SQL -1