如何从mysql

时间:2016-12-20 15:32:30

标签: mysql triggers

我在MySQL ParkIn{ parkin_id,InTime}ParkOut{parkout_id,OutTime}Counter{ Counter_ID, Counter}中有3个表。 每次在Parkin表中都有一个Insert时,我需要Counter列将1添加到其先前的值,每当ParkOut表中有一个Insert时,我需要计数器列减去1.计数器表不一定要插入新行每次都只是不断更新计数器值。

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交易中被称为“物化视图”。它是“物化的”,因为它是您实际实时维护的实际表格。我建议使用普通视图而不是物化视图来解决您的问题。