Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вмъкване на оператор + Комбиниране на данни от таблица и променлива в тригер

Не можете да третирате тригер така, сякаш обработва ред по ред. Ако вмъкването се случи с помощта на клауза с множество стойности или вложен избор, тригерът ще се задейства веднъж за цялата операция, което означава, че ще обработвате само един произволен @UserID.

Тук предполагам, че вашата таблица PlaneGPSCoordinates има точно 5 реда и че това са координатите, които всеки нов потребител получава.

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

Но това повдига въпроса защо да копирате едни и същи координати за всеки потребител? Това ли е нещо, което ще актуализират често, просто искате да поставите някои стойности по подразбиране там, за да започнете?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Използвайте изчислени полета от SELECT в клаузата WHERE

  2. Заменете дублиращите се интервали с едно пространство в T-SQL

  3. Брой ненулеви колони във всеки ред

  4. Service Broker или SqlDependency в SqlLocalDb?

  5. Уникална ли е колоната TimeStamp?