当前位置:首页计算机类软件水平考试中级数据库系统工程师->某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票

某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为E-SQL编写的部分售票代码: EXEC SQL SELECT balance INTO:x FROM tickets WHERE flight=:flightno; printf("航班%s当前剩余机票数为:%d\n请输入购票数:", flightno,x); scanf("%d",&a); EXEC SQL UPDATE tickets SET balance =x =:a WHERE flight=:flightno;请根据上述描述,完成下列问题。

【问题1】上述售票程序,在并发状态下,可能发生什么错误?产生这种错误的原因是什么?

【问题2】若将上述代码封装成一个完整的事务,则:(1)在并发请求下的响应效率会存在什么问题?(2)分析产生效率问题的原因。(3)给出解决方案。

【问题3】下面是改写的存储过程,其中flightno为航班号;a为购票数;result为执行状态:1表示成功,0表示失败;表tickets中的剩余机票数balance具有大于等于零约束。请补充完整。CREATE PROCEDRUE buy_ticket(char[]flightno IN,( a ), int result OUT)AS BEGIN … UPDATE tickets SET balance=( b ) WHERE flight=flightno; if (sqLcode<>SUCCESS){ //sqLcode为SQL语句的执行状态( c ); result=0; return; } COMMIT;( d )END

查看答案 纠错
答案:
本题解析:

【问题1】本题考查事务基本概念及编程应用。此类题目要求考生认真阅读题目对实际问题的描述,分析现实业务中存在的问题,并以事务的方式提出解决方案及编程中的处理方式。根据题目描述的售票程序及部分代码,程序的逻辑是正确的,但在并发状态下,可能会产生错误。修改指令UPDATE会被分解为读取剩余票数到变量、修改变量、写入数据库几个步骤,并发时存在指令交叉,造成一个程序的修改被其他程序所覆盖,称为丢失修改错误。如下面所示的一个并发调度:

中级数据库系统工程师,章节练习,基础复习,SQL语言

若上面所示的两个售票程序并发执行,两个程序先读取剩余票数据A(当前值为16)T1购票1张后,写入剩余票数为15,T2购票2张后,写入剩余票数为14。T1写入的15被T2写入的14所覆盖,T1所做的修改丢失。上述两个程序单独执行或串行执行都不会出现这种错误,错误产生的原因在于事务并发执行时受到另一事务的干扰,破坏了事务的隔离性。

【问题2】封装的事务由两条SQL语句构成,中间存在与用户的交互,等待用户输入购票张数,会造成长事务,加锁状态下,其他购票事务程序会长时间等待,严重影响系统的响应速度。应将查询票数从事务中分离出来,UPDATE指令独立构成一个事务。

【问题3】这是一个用存储过程实现购票的事务程序,存储过程参数部分给出了航班号和执行状态返回参数,应加入购票张数作为参数;修改剩余票数的UPDATE语句处需补充的是当前票数减去购票张数;SQL语句执行错误时应该进行事务回滚并退出程序,所有事务代码执行完成后提交,并返回。

更新时间:2021-12-04 00:39

你可能感兴趣的试题

单选题

(  )is the process of transforming information so it is unintelligible to anyone but the intended recipient.

  • A.Encryption
  • B.Decryption
  • C.Security
  • D.Protection
查看答案
单选题

As each application module is completed,it undergoes(  )to ensure that it operates correctly and reliably.

  • A.unit testing
  • B.integration testing
  • C.system testing
  • D.acceptance testing
查看答案
单选题

(  )algorithm specifies the way to arrange data in a particular order.

  • A.Search
  • B.Random
  • C.Sorting
  • D.Merge
查看答案
单选题

After analyzing the source code,(  )generates machine instructions that will carry out the meaning of the program at a later time.

  • A.an interpreter
  • B.a linker
  • C.a compiler
  • D.a converter
查看答案
单选题

(  )can help organizations to better understand the information contained within the data and will also help identify the data that is most important to the business and future business decisions.

  • A.Data processing system
  • B.Big Data analytics
  • C.Cloud computing
  • D.Database management
查看答案
单选题

浏览器开启无痕浏览模式后,(  )依然会被保存下来。

  • A.浏览历史
  • B.搜索历史
  • C.已下载文件
  • D.临时文件
查看答案
单选题

下列协议中,不属于TCP/IP协议簇的是(  )。

  • A.CSMA/CD
  • B.IP
  • C.TCP
  • D.UDP
查看答案
单选题

下列传输介质中,带宽最宽、抗干扰能力最强的是(  )。

  • A.双绞线
  • B.红外线
  • C.同轴电缆
  • D.光纤
查看答案
单选题

数控编程常需要用参数来描述需要加工的零件的图形。在平面坐标系内,确定一个点需要2个独立的参数,确定一个正方形需要(  )个独立的参数。

  • A.3
  • B.4
  • C.5
  • D.6
查看答案
单选题

某书的页码为1,2,3,...,共用数字900个(一个多位数页码包含多个数字),据此可以推断,该书最大的页码为(  )。

  • A.237
  • B.336
  • C.711
  • D.900
查看答案