触发器(3)
* 回滚只能回滚到上一步操作。
* UPDATE,INSERT,DELELE 这些操作都将建立一个临时库(SQL 2000触发器只有DELETED,INSERTED)存储被操作过的数据。
/*触发器实例(3)*/
create trigger grade_update
on sc
for delete,insert,update
as
declare @sname char(10)
declare @grade smallint
select @sname=sno,@grade=grade from sc where grade>100 or grade<0
if @grade<0
begin
update sc set grade=0 where sno=@sname
print '成绩输入有误!'+@sname+' 成绩置为0'
end
else if @grade>100
begin
rollback tran
print '成绩输入有误!'+@sname+'成绩输入无效'
end
else
begin
print'成绩输入有效,已经更新!'
end
update sc set grade=-12 where sno='95001' /*看效果*/
update sc set grade=120 where sno='95001'
/*触发器实例(3)*/
create trigger sexandage1_update
on student
for delete,insert,update
as
declare @sssex char(2)
declare @ssage smallint
select @sssex=ssex,@ssage=sage from student where ssex<>'男' or sage>=25
if @sssex<>'男'
begin
update student set ssex='男' where ssex=@sssex
print '你输入的性别有误!性别'+@sssex+'性别置为男性别'
end
else if @ssage>=25
begin
update student set sage=24 where sage=@ssage
print '你输入的年龄大于24岁!年龄'+@ssage+'年龄置为25岁!'
end
insert into student ( sno,ssex, sage) values('95029','男',25) /*看效果*/
/*触发器实例(4)*/
create trigger samesno_update
on student
for delete,insert,update
as
declare @ssno char(5)
declare @num smallint
select @ssno=sno from inserted where sno=@ssno
select @num=count(sno) from student where sno=@ssno
if @num>=2
begin
delete from student where sno=@ssno
print 'shurucuo'
end
DBA工作流程:建库-建表-建触发器(delete,insert)-建存储过程-录入数据
/*作业的操作*/
/*分离,附加,删除数据库的不同点*/
分离:右击已建的数据库选分离数据库
附加:右击数据库目录选附加数据库
备份:完全,差异,事物,完全和差异一般共用一个数据库,事物单独用一个数据库,查看备份情况:右击已建的备份作业选查看历史记录
还原:必须从设备中添加,数据库名不同用强制还原
游标:一个标志,一个游动的过程。
1,向前游标
2,静态游标(可做删,改,查操作)(static)
3,动态游标 (dynamic)
4,关键值游标(动静结合)(keyset)
格式:
declare cur_stu cursor/*建立游标*/
keyset
for
select * from student
open cur_stu /*打开游标*/
fetch next from cur_stu/*使用*/
fetch prior from cur_stu
fetch first from cur_stu
fetch last from cur_stu
fetch last absolute 3 from cur_stu
fetch last relative 3 from cur_stu
/*注:absolute :绝对位置
relative :相对于当前的位置*/
格式: fetch [next/prior/first/last/absolute/relative]
from 游标名
/*静态游标例子*/
declare cur_stus cursor
static
for
select * from student
open cur_stus
delete from student where sno='95009'
fetch next from cur_stu
fetch prior from cur_stu
fetch first from cur_stu
fetch absolute 3 from cur_stu
fetch relative 3 from cur_stu
/*随机抽取两条记录*/
declare stucursss cursor
keyset
for
select * from student
open stucursss
create proc ppppp
as
declare @ppppp smallint
set @ppppp=floor (rand()*5)-1
print 'first rand'
fetch absolute @ppppp from stucursss
set @ppppp=floor (rand() *5)-1
print 'second rand'
fetch absolute @ppppp from stucursss
ppppp
ppppp /*调用pp过程*/
close stucur /*关闭游标*/
deallocate 游标名 /*删除游标*/
设置access数据库密码:"工具"/"安全"/"设置数据库密码"
撤消access数据库密码:
(1)"文件"/"打开"单击已经建立的*.mdb数据库文件,在右下角"打开"中选择以独占方式打开。
(2)"工具"/"安全"/"撤消数据库密码"
上一篇: 最近的感想 博客分类: 非技术