问答题
将下面的SQL语句补充完整,完成“01号仓库所存储的原材料信息只能由管理员李劲松米维护,而采购员李强能够查询所有原材料的库存信息”的功能。 CREATE VIEW raws_in_wh01 AS SELECT (g) FROM 原材料 WHERE仓库号="01"; GRANT (h) ON (i) TO 李劲松; GRANT (j) ON (k) TO 李强;
【答案解析】解析:本问题考查应试者对SQL视图定义和授权语句的掌握。题干给出了通过视图和授权机制实现数据库安全性的方法:建立了01号仓库的视图,将对视图的更新权限赋给李劲松。题干同时要求对原材料的查询权限赋予李强,可以直接使用授权语句。授权的基本语法:GRANT <权限> ON <对象> TO<用户名>;
问答题
仓库管理数据库的订购计划关系模式为:订购计划(原材料编号,订购数量)。采用下面的触发器程序可以实现“当仓库中的任一原材料的数量小于其储备量时,向订购计划表中插入该原材料的订购记录,其订购数量为储备量的三倍”的功能。请将该程序的空缺部分补充完整。 CREATE TRIGGER ins_order_trigger AFTER (1) ON 原材料 REFERENCING NEW ROWAS nrow FOR EACHROW WHEN nrow.数量<arow.储备量 INSERT INTO 订购计划VALUES ((m),(n));
【正确答案】正确答案:存在问题:触发器程序判定某一原材料“数量”是否小于其存储量时,是按照当前记录的“数量”来判定的,当一种原材料存储在多个仓库时,这样判定是错误的,应根据该原材料在各仓库的存储总量判定。 应将触发器程序的WHEN 子句条件修改为: WHEN nrow.储备量>(SELECT SUM (数量) FROM 原材料 WHERE 编号=(SELECT 编号 FROM nrow) GROUP BY 编号)