有关存储过程和事务的疑问

38 views
Skip to first unread message

杨博东

unread,
Apr 12, 2017, 12:40:49 AM4/12/17
to 西邮Linux兴趣小组
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;

    就像我注释中的问题描述的那样,现在我不知道怎么在存储过程中判断状态(不像之前会返回结果集),知道的伙伴快快解答下。

    还有就是我这样使用存储过程和事务结合的方式对不对?存储过程实际使用的多吗?

    谢谢大家啦~


    


Reply all
Reply to author
Forward
0 new messages