【发布时间】:2015-09-08 05:33:33
【问题描述】:
我正在使用 php/mysql 构建一个预订系统,我试图弄清楚如何在最终用户输入他们的预订详细信息时保持一行 4 分钟,以避免人们在同时。如果他们离开页面,一旦 4 分钟计时器结束,“持有”该票证的记录将被删除。
我一直在考虑安排一个活动,在他们到达初始页面 4 分钟后运行,但是当他们完成信息页面并完成预订时,应该取消该活动。我在这个问题上进行了很多搜索,只找到了安排未来事件的方法,而不是“保持”记录。
我还认为可能会创建一个唯一的临时值,我可以在 4 分钟结束时查找事件(即名称列中带有 'DELETE4MINS' 的 varchar)。但是,我觉得应该有更好的方法来做到这一点,并且处理保留票的行都没有 varchar 元素。
我有以下表格保存机票预订信息:
CREATE TABLE reservations(
rid int NOT NULL AUTO_INCREMENT,
aid int NOT NULL,
approval tinyint(1) NOT NULL,
creationTime TIMESTAMP
DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (rid),
CONSTRAINT UQ_RESERVATION_COMPOSITE UNIQUE(rid, approval),
FOREIGN KEY (aid) REFERENCES accounts (aid)
ON DELETE CASCADE
);
CREATE TABLE reservedTickets(
rid int NOT NULL,
tid int NOT NULL,
hid int NOT NULL,
approval tinyint(1) NOT NULL,
PRIMARY KEY (tid),
FOREIGN KEY (rid, approval) REFERENCES reservations (rid, approval)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (tid) REFERENCES tickets (tid)
ON DELETE CASCADE,
FOREIGN KEY (hid) REFERENCES people (hid)
ON DELETE CASCADE
);
【问题讨论】: