根据上述说明,用SQL定义“原材料”和“仓库”的关系模式如下,请在空缺处填入正确的内容。 create Table 仓库 (仓库号 Char (4), 面积 Int,

admin2009-05-15  191

问题 根据上述说明,用SQL定义“原材料”和“仓库”的关系模式如下,请在空缺处填入正确的内容。
   create Table 仓库 (仓库号 Char (4),
                      面积   Int,
                      负责人 Char(8),
                      电话   Char(8),
                       (a));//主键定义
   Create Table 原材料 (编号 Char (4)  (b),//主键定义
                         名称   Char (16),
                         数量   Int,
                         储备量 Int,
                         仓库号  (c),
                           (d));//外键定义
仓库管理数据库的订购计划关系模式为:订购计划(原材料编号,订购数量)。采用下面的触发器程序可以实现“当仓库中的任一原材料的数量小于其储备量时,向订购计划表中插入该原材料的订购记录,其订购数量为储备量的三倍”的功能。请将该程序的空缺部分补充完整。
   Create Trigger ins_ order_ trigger After  (1)   On 原材料
          Referencing New Row As nrow
          For Each Row
          WHEN nrow.数量<nrow.储备量
          Insert Into 订购计划 Values
              ((m),(n));

选项

答案(l)Update,Insert (m)nrow.编号 (n)nrow.存储量*3

解析 已知仓库管理数据库的订购计划关系模式为:订购计划(原材料编号,订购数量)。给定的触发器程序要实现“当仓库中的任一原材料的数量小于其储备量时,向订购计划表中插入该原材料的订购记录,其订购数量为储备量的三倍”的功能。
   我们先看(m)空和(n)空,显然,这里是往关系“订购计划”中插入一个新的记录,元组的属性分别为“原材料编号”和“订购数量”。那么,具体的值应该是多少呢?从上面的语句“nrow.数量<nrow.储备量”可以看出,“当仓库中的任一原材料的数量小于其储备量时”,“向订购计划表中插入该原材料的订购记录”,因此,(m)空应填写“nrow.编号”。且题目规定“其订购数量为储备量的三倍”,所以,(n)空应填写“nrow.存储量*3”。
   下面,我们再来看(1)空,这一空完成的是触发ins_ order_ trigger的条件。也就是说,什么时候能够出现“原材料的数量小于其储备量”这种情况呢?我们知道,能够触发触发器的事件有Update、Insert和Delete三种。显然,Delete在这里不适用,因为如果从关系“原材料”中删除了某种材料,就表明不再需要该材料了,不存在再订购的问题。因此,(1)空应填写“Update, Insert”。令很多考生感到迷惑的是,为什么插入一个新的记录(增加一种新的原材料),也要触发ins_ order_ trigger。这是因为在新增加一种原材料时,可能初始情况就是“数量”小于“储备量”。
转载请注明原文地址:https://jikaoti.com/ti/9ex7FFFM
0

相关试题推荐
最新回复(0)