发布时间 : 星期六 文章答案实验五:数据库编程更新完毕开始阅读
《数据库原理》实验报告(五)
成绩 实验名称 数据库编程 姓名 毕崇春 学号 班级 (1)了解存储过程、函数和触发器的作用; 实验 (2)熟悉使用命令创建存储过程的方法; 目的 (3)熟悉使用命令创建函数的方法; (4)熟悉使用命令创建触发器的方法。 (1) 创建入库表、出库表、库存表: create table tab_rk (spbh int,rkrq datetime,rksl int, primary key(spbh,rkrq)); create table tab_ck (spbh int,ckrq datetime,cksl int, primary key(spbh,ckrq)); create table tab_kc (spbh int primary key, kcsl int); 实 验 内 容 (2) 在入库表上创建一个删除触发器,实现库存表的自动更新。 create trigger tg_delete on tab_rk for delete as begin declare @spbh int declare @rksl int set @spbh=(select spbh from deleted) set @rksl=(select rksl from deleted) if exists(select * from tab_kc where spbh=@spbh) update tab_kc set kcsl=kcsl-@rksl where spbh=@spbh else print'输入有误!' end
(3) 在出库表上创建一个插入触发器,实现库存表的自动更新。
create trigger tr_insert on tab_ck for insert as begin
declare @spbh int declare @cksl int
set @spbh=(select spbh from inserted) set @cksl=(select cksl from inserted)
if exists(select * from tab_kc where spbh=@spbh) update tab_kc set kcsl=kcsl-@cksl where spbh=@spbh else
print'输入有误!' end
(4) 在出库表上创建一个删除触发器,实现库存表的自动更新。
create trigger tr_delete on tab_ck for delete as begin
declare @spbh int declare @cksl int
set @spbh=(select spbh from deleted) set @cksl=(select cksl from deleted)
if not exists(select * from tab_kc where spbh=@spbh) begin
insert into tab_kc values(@spbh,@cksl) return end else
update tab_kc set kcsl=kcsl+@cksl where spbh=@spbh end
(5) 创建一个存储过程,以商品编号为参数,删除入库表中该商品的所有入库记录。如果该商品不存在,返回0,否则返回1。
create procedure p_spbh @spbh int as begin
if exists(select * from tab_rk where spbh=@spbh) begin
delete from tab_rk where spbh=@spbh return 1 end else return 0 end
(6) 创建一个函数,以商品编号为参数,返回该商品的库存数量。如果该商品不存在,返回-1。
create function func_kcsl(@spbh int) returns int as begin
declare @kcsl int
if not exists(select *from tab_kc where spbh=@spbh) set @kcsl=-1 else
select @kcsl=kcsl from tab_kc where spbh=@spbh return @kcsl end