事务的特点和分类
原子性:事务中包括的诸多操作要么全做,要么全不做。
隔离性:一个事务执行不能被其他事务干扰。
持久性:一个事物一旦提交,它队数据库中数据的改变应该是永久的
事务有三种执行模式:显示事物,自动提交事务,隐式事务
显示事物:显示事物是以“BEGIN TRANSACTION”语句开始,以“COMMIT TRANSACTION”或“ROLLBACK TRANSACTION”结束
自动提交事物:这是SQL Server默认模式,它将每一条T-sql语句可以看成一个自动提交事物。
隐式事务:通过设“SET IMPLICIT_TRANSACTIONS ON”置开始,通过“SET IMPLICIT_TRANSACTIONS OFF”结束
例子
use shopdb
declare @salesamout int --声明变量,存放当天销量
declare @empid varchar(10) --声明变量,存放雇员编号
declare @goodsid varchar(10) --声明变量,存放商品编号
declare @errsum int --声明变量,错误累计
begin transaction--开启事物
select @empid = employeeid from employee where empname='徐如进'--找人
select @goodsid = goodsid from goods where goodsname='佳能IXUS200'--找物品
set @salesamout = 2--数量
set @errsum = 0
update goods set stockes = stockes -@salesamout where goodsid =@goodsid --修改库存
insert into salese (employeeid , goodsid ,sellamount,selldate) values (@empid,@goodsid,@salesamout,getdate())--返回当前时间信息,并且一一赋值
if @errsum > 0
begin
print '商品不足,回滚事物'
rollback transaction
end
else
begin
print '商品充足,提交事物'
commit transaction
end
视图
create view 视图名
AS
<SELECT 语句>
视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储数据值集形式存在。