日期:2014-05-18  浏览次数:20622 次

急,急,急,一个关于SQL Server应用问题,谁给我满意的回答我绝不会吝啬给100分
已知学生数据库中存放了这样的两张表,如下所示,
一张为毕业生信息表,记录毕业生的一些基本信息,
一张为学生敫
费表,记录了学生的敫费信息,由于学生毕业,我
们要从学生信息表中把毕业生的记录删除,但是如
果这个学生欠费的话,则不允许删除这个学生的记
录,要求:删除毕业生信息表中的那条记录,必须
通过存储过程实现,并带有输入参数,而判断该学
生是否欠费,必须使用触发器实现。
毕业生信息表
学号   姓名         性别       地址                                           联系方式
001     吴迪         男           淮南市潘集镇超前村18号       0554-6840157
002     潘婧萍     女           抚湖市繁昌县孙村镇65号       0553-4855986
003     余建星     男           黄山市翁县北岸镇52号           0559-7852013
004     贺艳         女           蚌埠市长淮卫镇上村85号       0552-6589421
学生缴费表
学号   姓名         已交费用       欠费
001     吴迪         5000               400
002     潘婧萍     5400                 0
003     余建星     4000               1400
004     贺艳         3000               2400

------解决方案--------------------
create table 毕业生信息表(学号 varchar(10), 姓名 varchar(10), 性别 varchar(10), 地址 varchar(50), 联系方式 varchar(50))
insert 毕业生信息表 select '001 ', '吴迪 ', '男 ', '淮南市潘集镇超前村18号 ', '0554-6840157 '
union all select '002 ', '潘婧萍 ', '女 ', '抚湖市繁昌县孙村镇65号 ', '0553-4855986 '
union all select '003 ', '余建星 ', '男 ', '黄山市翁县北岸镇52号 ', '0559-7852013 '
union all select '004 ', '贺艳 ', '女 ', '蚌埠市长淮卫镇上村85号 ', '0552-6589421 '

create table 学生缴费表(学号 varchar(10), 姓名 varchar(10), 已交费用 int, 欠费 int)
insert 学生缴费表 select '001 ', '吴迪 ', 5000, 400
union all select '002 ', '潘婧萍 ', 5400, 0
union all select '003 ', '余建星 ', 4000, 1400
union all select '004 ', '贺艳 ', 3000, 2400

create proc del(
@学号 varchar(10)
)
as
if not exists(select 1 from 学生缴费表 where 学号=@学号 and 欠费> 0)
delete 毕业生信息表 where 学号=@学号
go
create trigger tr on 毕业生信息表
instead of delete
as
declare @学号 varchar(10)
select @学号=学号 from deleted

if not exists(select 1 from 学生缴费表 where 学号=@学号 and 欠费> 0)
delete 毕业生信息表 where 学号=@学号


go
------解决方案--------------------
-- 创建测试表
create table StudentInfo(学号 varchar(3),姓名 varchar(10),性别 char(2),地址 varchar(100),联系方式 varchar(100))
Go
-- 插入测试数据
insert StudentInfo select '001 ', '吴迪 ' , '男 ', '淮南市潘集镇超前村18号 ' , '0554-6840157 '
insert StudentInfo select '002 ', '潘婧萍 ' , '女 ', '抚湖市繁昌县孙村镇65号 ' , '0553-4855986 '
Go
create table StudentFee(学号 varchar(3),姓名 varchar(10),已交费用 int,欠费 int)
Go
insert StudentFee select '001 ', '吴迪 ',5000,400
insert StudentFee select '002 ', '潘婧