视图、事务

---------------------视图:对查询语句的封装------------------
--视图就是对sql语句的封装
create view vw_Emps
as
select
    t1.AreaID,
    t1.AreaName,
    t2.AreaNAme  as Area
    from TblArea as t1
    inner join TblArea as t2 on t1.AreaPId=t2.AreaId

go
select * from vw_Emps
--视图并不存储数据,视图只是将sql语句封装了一下,所以最执行的还是sql语句,
--若是表中的数据发生了变化,视图的结果也就变化了
--降低了数据库的的复杂程度
--防止未经许可的用户访问的敏感程度

--修改视图 alter view vw_Emps
--删除视图 drop view vw_Emps
go
alter view vw_Emps1
as
 select Top 90 percent * from TblArea order by AreaId desc--order by 失去意义
go

select * from TblArea order by AreaId desc --只能在查询视图之外用order by排序

 事务:两个语句同生共死。如银行转账,一个帐号有资金的增加,必须有另一个帐号的资金的减少

select * from bank
--手动开启一个事务
begin tran
    declare @sum int=0;
    update bank set balance=balance-1000 where cId='0002'
    set @sum=@sum+@@ERROR
    update bank set balance=balance+1000 where cId='0001'
    set @sum=@sum+@@ERROR
    if @sum<>0
    begin
        rollback tran
    end
    else
    begin
        commit tran
    end
原文地址:https://www.cnblogs.com/tobecabbage/p/3570161.html