【发布时间】:2018-12-10 15:07:40
【问题描述】:
我的 SQL Server 数据库中有 2 个表,例如 [Camera] 和 [CameraData]。由于[Camera] 中的增量,如何编写一个触发器,该触发器将在将行插入[CameraData] 后更改[CameraData] 中的值。
例如我们在[Camera]有2个摄像头:
- 相机 1,{id} = 1 且 {delta} = null
- 相机 2,{id} = 2 和 {delta} = 3
所以当我们自动插入表 [CameraData] 时,f.e. :
Id_camera = 2, angle = 30, Changed = null
在这种情况下,我们需要检查相机 2 上的 [Camera] 是否有 delta,如果是这样,我们需要将 insert 修改为:
Id_camera = 2, angle = 33 (angle + Camera.Delta), Changed = True
更新 1
根据评论[3]是表[CameraData]中放置角度的列
CREATE TRIGGER Delta_Angle
ON CameraData
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
UPDATE CameraData
SET DeltaFlag = 1, [3] = inserted.[3] + i.DeltaAngle
FROM CameraData h
INNER JOIN Camera i ON h.ID_Camera = i.ID_Camera
WHERE i.DeltaAngle != ''
END
【问题讨论】:
-
所以你想把
CameraData中angle的值改成angle + inserted.delta?表CameraData中该相机的所有行都是这样吗?到目前为止,您为实现这一目标做了哪些尝试? -
@Larnu,不,我想将 'CameraData' 中的 'angle' 更改为 angle + 'Camera.delta' 如果我们在相机上具有相同的 pk 插入和相机在 'Camera' 如果最后一个有 delta != 0
-
是的,您可以为此使用触发器。如果您需要编码帮助,您需要提供一些详细信息。 Here 是一个很好的起点。
-
这不是我说的吗..?不过,请分享您的尝试,并按照 Sean 的建议进行更新。
-
@Larnu 用我的代码更新了问题,但我不知道是不是这样
标签: sql-server database triggers