update types set 类型编号= '6002'
where 类型分类= 9
上面的一些约束象主关键字,外主关键字约束等的增加,删除和修改的操作我们学过的SQL Server 2005中有很详细的介绍,我就不一一演示出来了。
3、 实现各种查询(简单查询、模糊查询、连接查询、嵌套查询等)4、 设计一个存储过程,要求在存储过程中使用游标;设计一个触发器,实现表间的级联删除或修改。
update departments
set 部门编号=''
select * from departments
alter table 学生
add 领导名称 varchar(10)
create procedure proc_领导名称
@部门名称varchar(10),@部门编号varchar(10),@领导名称varchar(10)
as
declare cursor_no_xf cursor
for
select 部门名称,部门编号from departments
where (部门编号 is null or 部门编号=0)
open cursor_no_xf
fetch next from cursor_no_xf into @部门编号,@部门名称
while @@fetch_status=0
begin
select 部门名称,部门编号from departments
update departments set 部门编号=@部门编号 where部门名称=@部门名称 and 领导名称 = @领导名称
fetch next from cursor_no_xf into @部门编号,@部门名称
end
close cursor_no_xf
deallocate cursor_no_xf
5、 设计一个触发器,实现表间的级联删除或修改。
触发器设计实现表间的级联修改。
create trigger trig_update
on departments
for insert,update
as
declare @部门编号varchar(20),@部门名称varchar(20),@部门职能描述varchar(20),@上级部门编号varchar(20)
select @部门编号= 部门编号,@部门名称= 部门名称,@部门职能描述= 部门职能描述,@上级部门编号= 上级部门编号
from inserted
if update(上级部门编号)
update departments set 上级部门编号=@上级部门编号
where 部门编号= @部门编号
else
if update(部门名称)
update departments set 部门名称= @部门名称where @部门编号= 部门编号
else
print'该列值不能改!'
rollback transaction
print '该数值已成功修改!'
测试:update 部门名称
set 上级部门编号4 =1001 where 部门编号=’1001’
触发器设计实现表间的级联删除
create trigger trig_delete
on departments
for delete
as
declare @t int,@部门编号 char(6)
set @t = 0
select @t = count(部门编号) ,@部门编号 = 部门编号
from deleteda
group by 部门编号
if @部门编号='1001'
begin
print('对不起,该条记录不允许删除!')
rollback transaction
end
else
print('OK!已经成功删除该记录了!')
delete from purchaseorder
where 部门编号=@部门编号
update departments
set 部门编号 = 部门编号-@t
delete from departments
where 部门编号 = @部门编号
update departments
set 部门编号 = 部门编号-@t
where 部门编号 = @部门编号
检测:
delete from departments
where 部门编号 = '1001'
由于自己时间没计划好后面两道题做的比较粗糙。
心得体会:
这是自己做的第一个课程设计,刚开始的时候感觉没有什么头绪,慢慢的深入后也感觉挺有意思的。但是可能自己前面的知识掌握不牢靠,在做到存储过程中还是出了点问题,开始时不能实现,后来经过修改基本能达到要求。
由于自己时间的原因后面的题目做的并不怎么好,希望自己能够在寒假中间有所改进。好好的学习一下SQL,为以后毕业设计打下点基础。