select @员工编号='员工编号' from inserted
update 员工售票情况set 售出票数=售出票数+1 where 员工编号=@员工编号 update 员工奖励表set 奖励等级='一等奖励' where 员工编号=@员工编号 end go
--触发检验:
insert into 售票表
values('111002','20106','S223','2013/11/19 12:00:00')
--3、退票时自动修改相应车次的剩余座位数 create trigger tp_ticket on 退票表 after insert as begin
declare @p_num char(5),@seat_sum int,@t_num char(5) select @p_num=车票编号,@t_num=车次号from inserted select @seat_sum=剩余票数from 余票表 update 余票表
set 剩余票数=剩余票数+1 where 车次号=@t_num end
--触发检验:
insert into 退票表
values('20136','1234','2013-11-13 12:00')
--4、退票时,根据退票时间判断是否允许退票 create trigger t_p on 退票表 instead of insert as begin
declare @p_num char(5),@t_time datetime,@f_num datetime select @p_num=车票编号,@t_time=退票时间from inserted
select @f_num=发车时间from 车票表where 车票编号=@p_num if @f_num-@t_time>=2 print'退票成功' else
print'不能退票' end
--触发检验:
insert into 退票表 values('20116','S213','2013-11-19 12:00')
14
第6章 数据库视图设计
--1、创建业务员表视图
create view 业务员表视图with encryption as
select 业务员.员工编号,姓名,工作站点,奖励等级 from 业务员,员工奖励表
where 业务员.员工编号=员工奖励表.员工编号 with check option
--2、创建车次管理视图 create view 车次管理视图 as
select 车次表.车次号,座位数,发车时间 ,车种,始发站,终点站 from 车次表,车站表
where 车次表.车次号=车站表.车次号
-- 、创建车票表视图 create view 车票表视图 as
select 车票编号,车次号,发车时间,座位编号,价格,座位种类 from 车票表
--4、创建车票销售视图
create view 创建车票销售视图 as
select 车次管理视图.车次号, 车次管理视图.发车时间 ,车种,始发站,终点站,价格,座位种类,剩余票数
from 车次管理视图, 车票表,余票表
where 余票表.车次号=车票表.车次号and 车次管理视图.车次号=余票表.车次号
--5、创建车票销售视图 create view 车票销售视图 as
select 员工编号,售票表.车票编号,价格,售票日期 from 车票表,售票表
where 售票表.车票编号=车票表.车票编号
-- 6、创建售票表视图 create view 售票表视图 as
select 员工编号,车票编号,车次号,售票日期
15
from 售票表
-- 7、创建退票表视图 create view 退票表视图 as
select 车票编号,车次号,退票时间 from 退票表
--8、创建余票表视图 create view 余票表视图 as
select 车次号,剩余票数,发车时间 from 余票表
--9、创建余票情况视图1 create view 余票情况视图1 as
select 余票表.车次号,发车时间 from 余票表,售票表
where 余票表.车次号=售票表.车次号
--10、创建余票情况视图2 create view 余票情况视图2 as
select 售票表.车次号,发车时间 from 余票表,售票表
where 余票表.车次号=售票表.车次号
第7章 数据库存储过程设计
--1、指定始发站和终点站查询车次号、车种、价格、座位种类、剩余票数等信息
create procedure btend @始发站char(20),@终点站char(20) as begin
set nocount on select *
from 车票销售视图
where 始发站=@始发站and 终点站=@终点站 end
--执行存储过程
exec btend '郑州','北京'
16
--2、指定车次查询始发站、终点站、车种、价格、座位种类、剩余票数等信息 create procedure 按车次查询@车次号char(5) as begin
set nocount on select *
from 车票销售视图 where 车次号=@车次号 End
exec 按车次查询 'T146'
--3、指定车次指定发车时间的车票销售情况
create procedure p_selld @t_num_in char(5),@d_time_in datetime,@sum_ticket char(6) output as
select 车次号,count(*) as '@sum_ticket' from 余票情况视图
where 余票情况视图.车次号=@t_num_in and 发车时间=@d_time_in group by 车次号 go
--执行存储过程
exec p_selld 'G574', '2013/11/19 15:53:00','count(*)'
17
--4、指定日期各业务员车票的销售收入 create procedure rp_selled @y_num_in char(6) datetime,@money char(6) output as
select 员工编号,sum(价格) as '@money' from 车票销售视图
where 员工编号=@y_num_in and 售票日期=@d_time_in group by 员工编号 go
--执行存储过程
exec rp_selled '111002','2013/2/10 0:00:00','sum(价格)'
output,@d_time_in
--5、指定员工编号查询售出票数
create procedure 编号查询@员工编号char(6) output,@售出票数char(6) output as
select 员工编号,count(车票编号) as '@售出票数' from 售票表
where 员工编号=@员工编号 group by 员工编号 go
exec 编号查询'111002','count(车票编号)'
--6、改变指定员工的工作站点
create procedure 工作站点变更@员工编号char(6),@工作站点char(20) as
update 员工奖励表
set 工作站点=@工作站点 where 员工编号=@员工编号 go
exec 工作站点变更 '111002','北京'
--7、根据身份证号码查询乘客的车票信息 create procedure s_tri1 @id char(18) as
select 身份证号,姓名,乘客表.车票编号,车次管理视图.车次号,车种,始发站,终点站,车票表.发车时间,座位编号,价格,座位种类 from 乘客表,车次管理视图,车票表
18