高并发购票数据库系统代码

子昊
2021-08-20 / 0 评论 / 347 阅读 / 正在检测是否收录...

第一关

让我们开始吧:

use mydb;
#请在此处添加实现代码
########## Begin ##########
#创建存储过程
DELIMITER //
CREATE PROCEDURE GetCustomerLevel(
  in p_customNumber int(11),
  out p_customerLevel varchar(10))
BEGIN
  declare creditlim int;
  select creditlimit into creditlim from customers where customerNumber=p_customNumber;
  CASE
WHEN creditlim>10000 THEN
   SET p_customerLevel='PLATINUM';
WHEN (creditlim>=5000 AND creditlim<=10000) THEN
   SET p_customerLevel='GOLD';
WHEN creditlim<5000 THEN
   SET p_customerLevel='SILVER';
END CASE;
  select customerNumber,p_customerLevel from customers where customerNumber=p_customNumber;
END //
DELIMITER ;
########## End ##########

{message type="success"}大功告成!{/message}

运行效果:

第二关

开始你的任务吧,祝你成功!

让我们开始吧:

先在下面这两个位置分别插入:


第一步插入:

DECLARE t_error INTEGER DEFAULT 0;  
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 

第二步,覆盖掉"commit;",因为if判断里嵌入了:

IF t_error = 1 THEN  
        rollback; 
    ELSE  
        commit;
    END IF;  

到这一步,这个文件代码就敲完了,但是先别急,还没达到目标哦!

第三步:

点击右上角文件夹图标切换到query2.sql文件:

第四步:

添加如下代码:

insert into t_emp values(1,'Nancy',301,2300);
insert into t_emp values(2,'Tod',303,5600);
insert into t_emp values(3,'Carly',301,3200);

{message type="success"}大功告成!{/message}

运行截屏:

第三关

让我们开始吧!

其实这里有个小技巧,不需要按照他说的流程做一遍,只需将隔离级别修改成“未提交读”就行了
很简单,两行代码解决:

#1.修改隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

#2.查询隔离级别
select @@tx_isolation;

注意,可能要运行两下!!!

{message type="success"}大功告成!{/message}

运行截屏:

第四关(此关题目有Bug,有修补措施):


让我们开始吧!

准备工作:

直接运行评测{
       if(显示一张表。)
         {
         无需准备操作,跳到第一步;
         }
       else if(显示一长串英文(连不上mysql))
         {点击右下角的上一关回到第三关,然后运行测评
     ,提示`不通过`再点击下一关到第四关,运行
     测评报错内容为一张表那就行 
          了。(如果第三关提示通过了那就再点一 下,
   切记很重要!!不然第四关你
   连接不上mysql!!!);
         }

一样的,不需要按他的流程做
第一步:

打开默认命令行窗口就行了,不需要再新开"命令行1"

4.1 输入mysql连接命令(命令行默认Ctrl+C为终止操作而不是粘贴,所以在命令行需要使用Shift+Ctrl+C来完成粘贴,下同):

mysql -u root -p

{message type="info"}回车后键盘敲123123,此时密码隐藏不显示,敲回车就连接成功了{/message}

4.2 创建事务:

Begin;

4.3 导入sql表:

source /data/workspace/myshixun/src/step3/table.sql;

4.4 改表名:(源代码是错误名字所以需要自己手动改)

alter table ticketing rename to account;

4.5 改表头:

alter table account change tickets money int;

4.6 改值A的money值:

update account set money=0 where name='A';

4.7 改值B的money值:

update account set money=0 where name='B';

{message type="success"}大功告成!{/message}

运行截屏:

第五关:

{message type="warning"}千万别被编程要求误导...别问我怎么知道的,草(一种植物){/message}
要求上写“在右侧命令行中编写代码...”,放屁!!!
直接在代码文件里复制粘贴以下内容,完美!

insert into student values(1,'Tom',80,78);
insert into student values(3,'Lucy',97,95);
lock table student read;
update student set math =100 where stu_id=2;

{message type="success"}大功告成!{/message}

运行截屏:

第六关:

让我们开始吧!

打开命令行窗口,依次输入:

6.1

mysql -u root -p

{message type="info"}回车后键盘敲123123,此时密码隐藏不显示,敲回车就连接成功了{/message}
6.2

Begin;

6.3

source /data/workspace/myshixun/src/step3/table.sql;

6.4

update ticketing set tickets=0 where name='A';

6.5

update ticketing set tickets=0 where name='B';

{message type="success"}大功告成!{/message}

运行截屏:

此文章完结于2021.8.21 19:13

18

评论 (0)

取消