数据库三种事务

1、什么是事务?

   不可分割的逻辑单元,由多个操作组成。

    a.自动提交事务

    b.显示事务

    c.隐式事务

 

  --创建数据库(仓库)、表(货架)、字段(商品格子) (结构)

 1 --创建表和插入测试数据
 2 create database BankDB;
 3 use BankDB
 4  5 create table bank(
 6     bankID int primary key not null,
 7     name varchar(20) not null,
 8     accountmoney money check(accountmoney>=1)
 9 )
10 11 insert into bank
12 select 1001,'张三',500 union
13 select 1002,'李四',1500 union
14 select 1003,'王五',1000

 

2、数据库的全局变量,数据库全局变量和自定义变量的区别?

     @@identity获取最近自动增长的值

     @@error 获取错误信息编号

     --凡是系统定义的变量@@

     --凡是自定义的变量都是@

 

3、自动提交事务

     --insert

     --update

     --delete 班级表 和 学生表 (约束) sql server 默认的删除中间存在约束的时候都删除不了

 

4、显示事务

     --开始事务 begin transaction

 1 --模拟转账的操作
 2 
 3 --因为有多个操作,至少两个 update 修改减张三的钱 update修改加李四的钱,其他还可能有系统日志和业务日志(设备编号、通过哪个业务员转,可能还有insert)
 4 
 5     
 6 
 7 declare @errorNum int=0     --定义存放错误的结果
 8 
 9 update bank
10 
11    set accountmoney=accountmoney-500
12 
13    where bankid=1001 and name='张三'     --索引或者字段较小
14 
15 
16 
17 
18 set @errorNum=@errorNum+@@error     --如果出错,这是@@error非零的错误数字
19 
20 update bank
21 
22    set accountmoney=accountmoney+500
23 
24    where bankid=1002 and name='李四'
25 
26 
27 
28 set @errorNum=@errorNum+@@error     --非零的错误数字
29 
30 
31 
32 
33 if @errorNum<>0
34 
35    begin
36 
37      rollback transaction;
38 
39    end
40 
41    else begin
42 
43      commit transaction;
44 
45    end;
46 
47 
48 
49 
50 --事务四种特性 --原子性、一致性、隔离性、持久性 查询--对数据没有更新操作
51 
52 commit;
53 
54 update bank
55 
56    set accountmoney=accountmoney-500
57 
58    where bankid=1001 and name='张三' --索引或者字段较小 --独立的
59 
60 
61 
62 update bank
63 
64    set accountmoney=accountmoney+500
65 
66    where bankid=1002 and name='李四'

 

 

5、隐式事务(sql server 要手动开启,oracle默认就是隐式事务)

    隐式事务,insert等之后数据是没有持久化的,需要commit持久化,没有commit是脏数据(存放在内存缓冲区)

    隐式事务如果开启,insert update delete 都不会自动持久化,需要大家手动的持久化

    set implicit_transactions off 开启隐式事务、off 关闭

select * from bank

rollback; --回滚 
commit; --提交 

insert into bank values(1005,'洪七公',500)

 

 

posted @ 2020-10-09 15:11  殇琉璃  阅读(672)  评论(0编辑  收藏  举报