Hi,list
我有这样一个电影买票的逻辑,在用户发起买票的操作后:
1)检查座位是否还在。(如果已经被买就返回error1)
2)检查用户余额是否足够。(如果余额不足就返回error2)
3)生成票 。
4)扣除用户的金额。
5)生成销售记录。
现在这套逻辑是直接在服务端(假设服务端和数据库服务器是分开的)完成的,比如 "检查票是否还在",我就构建相应的SQL语句去ticket表查询,如果返回的结果集为空,表明票还没有被买,也就是合法的,可以继续进行后续的操作。
学习了存储过程后,我想把这个逻辑实现成一个存储过程存放在数据库服务器上,它肯定也得设计成一个事务,我计划这样写 :
CREATE PROCEDURE sellTicket()
BEGIN
START TRANSACTION ;
/*
SELECT * from ticket where seat_id = 7 and sched_id = 9; //因为这条语句没有返回值,所以我现在无法判断票是否合法
...
*/
COMMIT ;
END;
就像我注释中的问题描述的那样,现在我不知道怎么在存储过程中判断状态(不像之前会返回结果集),知道的伙伴快快解答下。
还有就是我这样使用存储过程和事务结合的方式对不对?存储过程实际使用的多吗?
谢谢大家啦~