栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

SQL Server高级查询之常见数据库对象(数据库事务)第五章节

SQL Server高级查询之常见数据库对象(数据库事务)第五章节

1.数据库事务

1.一个事务内的所有语句代码作为一个整体来执行。
要么全部执行,要么全部不执行。当遇到错误时可以回滚事务,取消事务内所做的改变,从而保证数据库中的数据一致性和可恢复性。

2.显示事务
(1.)begin transaction :启动事务
(2.)commit transaction:提交事务
(3.)rollback transaction:回滚事务,表明在事务执行过程中遇到错误,事务内所修改的数据会被回滚到事务执行之前的状态

3.案例练习

--客户雷亚波在零聚网购买了两份”菠萝爆肉片“和一件“资生堂菲婷” 编写存储过程实现该业务
if exists(select * from sysobjects where name='proc_insertOrders')		--查看数据库是否存在这个存储空间,如若存在则删除
	drop procedure proc_insertOrders
GO
create proc proc_insertOrders(
@ordersDate varchar(20)	,		--下单日期
@customerName varchar(20) ,		--客户姓名
@title1 varchar(50)	,			--第一件商品名
@quantity1 int ,				--第一件商品数量
@title2 varchar(50) ,			--第二件商品名
@quantity2 int					--第二件商品数量
)
as
declare @customerID int;		--客户编号
declare @productID1 int;		--第一件商品编号
declare @productID2 int;		--第二件商品编号
declare @orderID	int;		--订单编号
select @customerID=customerId from customer where customerName=@customerName
begin transaction				--启动事务
--添加订单表记录
insert orders(customerID,ordersDate) values(@customerID,convert(date,@ordersDate))
if @@error=0					--返回上一条执行SQL语句的错误号,如果为0表示订单表记录成功
begin
	select @orderID=max(ordersID) from orders	--获取新增订单的订单编号
	select @productID1=productID from product where title=@title1	--获取第一件商品编号
	--添加第一件商品到订单明细表
	insert ordersdetail values(@orderID,@productID1,@quantity1)
	select @productID2=productID from product where title=@title2	--获取第二件商品编号
	--添加第二件商品到订单明细表
	insert ordersdetail values(@orderID,@productID2,@quantity2)
	if @@error = 0				--添加订单表和添加订单明细表记录成功
	begin
		print '添加订单成功'
		commit transaction		--提交事务
	end
	else 
	begin
		print '添加订单失败'
		rollback transaction	--回滚事务
	end
end
else
begin
	print '添加订单失败'
	rollback transaction		--回滚事务
end

GO
--调用存储过程
exec proc_insertOrders '2021-9-27','雷亚波','菠萝爆肉片',2,'资生堂菲婷',1

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号