![](/img/trans.png)
[英]GridView Row is not updating after SQLDatasource query changed?
[英]SQL query not updating table when row is changed
我的SQL查询有一个小问题,最好通过一个示例来说明:
1)如果booking.status
设置为open,则在运行该方法并将其显示在数据表中时对其进行计数。 让我们以plot_id=15
,如您所见,它在表中出现了3次。
2)结果,更改将反映在plot.jobs
3)但在booking.status
更新的情况下,该方法在运行时或在数据表中显示时将不再计数。 这是预期的。
4)如果未出现在列表中,则表示plot.plot_id=15
应该为0 ...为什么在plot.jobs
仍为3
我认为我在if (dtCounts.Rows.Count > 0) {...}
有条件的情况下错过了SQL查询。 问题是我不知道从哪里开始实施它。 谁能指出我正确的方向? 更新plot.jobs
时,如何计算booking.status
更改的实例?
到目前为止,这是我的代码: http : //pastebin.com/pYu17aVR
(对不起,由于某些原因,S / O不允许我将代码粘贴到答案中,它始终返回错误消息)
我不确定我是否确切地理解你想做什么。
您是否曾经想过要触发更新预订状态的触发器?
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
trigger_body
trigger_time: { BEFORE | AFTER }
trigger_event: { INSERT | UPDATE | DELETE }
您在12-17行的粘贴容器清单中给出的更新语句是有条件的booking.plot_id is NULL
(l.17)。
如果我正确地理解了您的问题,那么我根本就不需要循环。 相反,您可以将查询合并为一个查询,该查询也可以处理null:
update plot p
inner join (
select sum(case when status = 'open' then 1 else 0 end) cnt, plot_id
from booking
group by plot_id
) p2 on p.plot_id = p2.plot_id
set p.jobs = p2.cnt
有几件事情要注意-如果预订表中没有该plot_id的数据,该怎么办? 如何添加新地块?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.