我有一个包含 3 个表的数据库,我正在更新第一个表中的一行,然后尝试根据对第一个字段的更改来更新第二个和第三个表。
这是我目前拥有的:
--Session--
User Hotspot DownloadCounter
bob 123 0
--UserDownload--
User Download
bob 100
--HotspotDownload--
Hotspot Download
123 300
目前,当我从热点获取更新时,我用最新的流量计数器值更新会话表,但是我现在想用新的 DownloadCounter(旧的 DownloadCounter)的值更新 UserDownload 和 HotspotDownload 表。
我认为通过以下过程很容易做到这一点:
DECLARE increment INT;
UPDATE Session
SET @increment = (200 - Counter),
Counter = 200
WHERE (User = 'bob' AND Circuit = '123');
UPDATE UserDownload
SET Total = (Total + @increment)
WHERE (User = 'bob');
UPDATE HotspotDownload
SET Total = (Total + @increment)
WHERE (Circuit = '123');
我的想法是更新会话表并将计数器更改值分配给一个变量,然后在更新下载表时使用该变量。但是 '@' 在过程中会导致语法错误,并且没有 '@' 它认为增量是一个列,所以失败了。
如果总表中没有用户/热点的条目,我仍然需要更新会话表。
我尝试使用单个更新和左连接来执行此操作,但这导致首先更新 Sessions 表列,因此不会更新下载表。
是否可以将列上的计算结果分配给更新中的变量,然后在过程中的另一个更新中使用该更新?
谢谢。