答案实验五:数据库编程

发布时间 : 星期六 文章答案实验五:数据库编程更新完毕开始阅读

《数据库原理》实验报告(五)

成绩 实验名称 数据库编程 姓名 毕崇春 学号 班级 (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

联系合同范文客服:xxxxx#qq.com(#替换为@)