我正在尝试编写一个处理following problem的触发器。我试图从插入的表中提取所需的变量,将其与另一个表中的数据相结合,并将其作为一个表插入到所需的表中(我知道这有点模糊/混淆,请耐心等待...)
这就是我希望数据库工作的方式:
数据库中有三个表:
触发器应执行以下操作:
目前,我的不完整代码如下:
CREATE TRIGGER dbo.Matching
ON dbo.UserInfo
FOR INSERT
AS
DECLARE @userID as INT
BEGIN
SET NOCOUNT ON;
SELECT @userID = inserted.ID FROM inserted
INSERT....
END
GO
我对SQL很新,所以假设最糟糕的。我不知道现在如何创建INSERT语句,它会拉取GPS坐标,并将其与用户ID相结合,将其推送到匹配表...
非常感谢任何帮助!
答案 0 :(得分:1)
您不能将触发器视为一次处理一行。如果插入使用多值子句或嵌套选择发生,则触发器将针对整个操作触发一次,这意味着您将只处理一个任意的@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
但这引出了一个问题,为什么要为每个用户复制相同的坐标?这是他们经常更新的东西,你只想在那里放一些默认值吗?