我正在使用php / mysql构建一个预订系统,我试图找出如何在4分钟内保持一行,同时最终用户输入他们的预订详细信息,以避免人们保留同一张票。如果他们离开页面,记录"持有"一旦4分钟计时器结束,该票证将被删除。
我一直在考虑安排一个事件在他们点击初始页面后4分钟运行,但是当他们完成信息页面并完成他们的预订时,该事件应该被取消。我已经在这个问题上进行了大量搜索,并且只找到了安排未来事件的方法而不是" hold"记录。
我还想过可能会创建一个唯一的临时值,我可以在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
);