數據庫視圖,觸發器和事務

--select 查詢出來的結果集能夠經過as 起別名當作虛擬表來用 select*from (select*from score ,grade where score.degree between low and upp)as jibietable where rank='A' --建立視圖(視圖只能創建在實體表的基礎上) create view shitu1 as   select student.sname,student.sno,score.degree from student,score where student.sno=score.sno go create view shitu2 as select*from (select*from score ,grade where score.degree between low and upp)as jibietable where rank='A' go --修改視圖 alter view shitu2 as  select *from student go select *from shitu2 --刪除視圖 drop view shitu1數據庫

--觸發器---特殊的存儲過程。經過增刪改數據庫表來自動引起 alter trigger TR_Student_Insert on student--在哪一個表上創建觸發器 for insert--for是新增以後觸發,for還能夠寫成after as begin  update student set sname='楊波' where sname='金拓' end go insert into student values(304,'楊嶽','男','1990-07-21','95033') select *from student事務

-- alter trigger TR_Student_Delete on student instead of delete as begin  declare @sno int  select @sno=sno From deleted  delete from score where sno=@sno  delete from student where sno=@sno end go delete from Student where Sno=304 select *from student insert into Score values(304,'3-105',98)get

-- drop trigger TR_Student_insert create trigger TR_student_inserted on student instead of insert as begin  declare @sno int,@sname varchar(20),@ssex varchar(20),  @sbirthday datetime, @class varchar(20)  select @sno=sno,@sname=sname,@ssex=ssex,@sbirthday=sbirthday,@class=class from inserted  if @ssex='男'  begin   set @ssex='1'  end  insert into student values(@sno,@sname,@ssex,@sbirthday,@class) end go insert into student values(303,'金拓','男','1992-07-21','95033') select *from studentit

   --事務 select *from huowu begin tran--事務的開始 --開始寫流程語句table

 --語句寫完以後 if @@ERROR>0 rollback tran--回滾事務 else commit tran--提交事務 goto tranrollback --去往目標地 select*from student select*from score begin tran delete from score where sno=107 delete from student where sno=109 if @@ERROR>0 begin rollback tran end else begin  commit tran endclass

相關文章
相關標籤/搜索