MariaDB中的触发器和存储过程

时间:2018-02-18 15:50:55

标签: sql mariadb

我正在开发一个在线airticketing应用程序,后端在MariaDB数据库中。我有以下结构的预订表:

reservation table structure

当记录插入到reservation_status中时,默认值为TE,这表示计时器已过期。在这个系统中,我想给用户一个15分钟的会话时间来完成预订。如果预订在15分钟内完成,则reservation_status字段的值将更改为XE,这意味着预订成功。

我有一个名为schedule的下一个表,它具有以下结构:

schedule table structure

当在预订表中插入记录时,行中的值会更新。这意味着它增加了预订字段的值,同时它将剩余字段的值减去相同的数字。 当15分钟的时间结束并且由于任何原因乘客无法完成预订时,问题就出现了。如果预订未在15分钟内完成,我需要减少预订字段的值并增加预订流程开始时更改的剩余字段的值。 对于预订表的每个预订请求,在15分钟预订时间到期后,我不知道如何在MariaDB数据库中自动反转这些值。

1 个答案:

答案 0 :(得分:0)

预订时......

BEGIN;
increment one thing
decrement the other
record the time in the "job" table
COMMIT;

时间到了......

BEGIN;
DEcrement one thing
INcrement the other
remove the item from job table
COMMIT;

"工作" table可能需要的不仅仅是一个时间戳 - 它可能需要一个座位号,房号或其他什么,所以你知道要进/出的内容。

我会建议"工作"是一个不断运行的程序;它定期(例如,每分钟)醒来并检查是否有东西需要清理。

还有一件事,如果"工作"崩溃,你需要一些机制,如一个cron工作,来执行" keep-alive"在上面。启动它,但如果当前正在运行,则编码为die。