我在MySQL ParkIn{ parkin_id,InTime}
,ParkOut{parkout_id,OutTime}
和Counter{ Counter_ID, Counter}
中有3个表。
每次在Parkin表中都有一个Insert时,我需要Counter列将1添加到其先前的值,每当ParkOut表中有一个Insert时,我需要计数器列减去1.计数器表不一定要插入新行每次都只是不断更新计数器值。
答案 0 :(得分:1)
你正在努力做到这一点。
你可以做到
SELECT (parkin.rowcount - parkout.rowcount) Counter
FROM (SELECT COUNT(*) rowcount FROM ParkIn) parkin
JOIN (SELECT COUNT(*) rowcount FROM ParkOut) parkout
当您需要您描述的值时。您可以相信数据库可以用来做这种事情。
如果您真的想要拥有Counter表的错觉,可以创建一个视图。
CREATE OR REPLACE VIEW Counter AS
SELECT (parkin.rowcount - parkout.rowcount) Counter
FROM (SELECT COUNT(*) rowcount FROM ParkIn) parkin
JOIN (SELECT COUNT(*) rowcount FROM ParkOut) parkout
正如您在问题中描述的那样,您的计数器表在DBMS交易中被称为“物化视图”。它是“物化的”,因为它是您实际实时维护的实际表格。我建议使用普通视图而不是物化视图来解决您的问题。