From d43fd9151a24d66bbdda8ee87b5011d417f0a0e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=8A=E7=AB=A5?= <10033735+Harshreich@user.noreply.gitee.com> Date: Wed, 28 Sep 2022 03:41:10 +0000 Subject: [PATCH 1/3] . MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈昊童 <10033735+Harshreich@user.noreply.gitee.com> --- .../\344\275\234\344\270\232/SQLQuery1.sql" | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 "10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/SQLQuery1.sql" diff --git "a/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/SQLQuery1.sql" "b/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/SQLQuery1.sql" new file mode 100644 index 0000000..83441d4 --- /dev/null +++ "b/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/SQLQuery1.sql" @@ -0,0 +1,33 @@ +select * from AccountInfo --Ϣ +select * from BankCard --пϢ +select * from CardStateChange --п״̬ı +select * from CardTransfer --ת˱ +select * from CardExchange --׼¼ +--ȡ6000(checkԼ˻>=0)Ҫʹʵ֣޸ȡ¼ʹ +--update BankCard set CardMoney=6000 where CardNo=6225125478544587; + +alter table bankcard +add check(cardmoney>=0); + +begin transaction t_bank +update BankCard set CardMoney=CardMoney-6000 where CardNo=6225125478544587 +if @@ERROR!=0 +rollback transaction +insert into CardExchange values(6225125478544587,0,6000,GETDATE()) +if @@ERROR!=0 +rollback transaction +else +commit transaction t_bank +--ŷת1000Ԫ(checkԼ˻>=0) +begin transaction t_banktransfer +update BankCard set CardMoney=CardMoney-1000 where CardNo=6225125478544587 +if @@ERROR!=0 +rollback transaction +insert into CardTransfer values(6225125478544587,6225547854125656,1000,GETDATE()) +if @@ERROR!=0 +rollback transaction +update BankCard set CardMoney=CardMoney+1000 where CardNo=6225547854125656 +if @@ERROR!=0 +rollback transaction +else +commit transaction t_banktransfer \ No newline at end of file -- Gitee From ab43234f0c3a964ffc013124b8d2dd847935ccb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=8A=E7=AB=A5?= <10033735+Harshreich@user.noreply.gitee.com> Date: Wed, 28 Sep 2022 17:20:26 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=2010=E9=99=88?= =?UTF-8?q?=E6=98=8A=E7=AB=A5/=E4=BD=9C=E4=B8=9A/SQLQuery1.sql=20=E4=B8=BA?= =?UTF-8?q?=2010=E9=99=88=E6=98=8A=E7=AB=A5/=E4=BD=9C=E4=B8=9A/22.9.29.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\344\275\234\344\270\232/22.9.29.sql" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/SQLQuery1.sql" => "10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.9.29.sql" (100%) diff --git "a/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/SQLQuery1.sql" "b/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.9.29.sql" similarity index 100% rename from "10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/SQLQuery1.sql" rename to "10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.9.29.sql" -- Gitee From 8d96d22ccabd19fcc9bb02e42c52bf56e2fa6954 Mon Sep 17 00:00:00 2001 From: Harshreich <773407390@qq.com> Date: Thu, 29 Sep 2022 01:28:10 +0800 Subject: [PATCH 3/3] . --- .../22.9.29\344\272\213\345\212\241.md" | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 "10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.9.29\344\272\213\345\212\241.md" diff --git "a/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.9.29\344\272\213\345\212\241.md" "b/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.9.29\344\272\213\345\212\241.md" new file mode 100644 index 0000000..f517168 --- /dev/null +++ "b/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.9.29\344\272\213\345\212\241.md" @@ -0,0 +1,29 @@ +#### 1) 原子性 + +一个事务中的所有 SQL 语句,要么全部执行成功,要么全部执行失败,不会结束在中间的某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 + +##### 2) 一致性 + +在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,其中包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 + +##### 3) 隔离性 + +数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。 死锁 操作系统 + +##### 4) 持久性 + +事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。 + +#### 事务分类 + +**自动提交事物**: 是SQL Server默认的一种事务模式,每条Sql语句都被看成一个事务进行处理。 + +**显式事务**: T-sql标明,由Begin Transaction开启事务开始,由Commit Transaction 提交事务、Rollback Transaction 回滚事务结束。 + +**隐式事务**:使用Set IMPLICIT_TRANSACTIONS ON 将将隐式事务模式打开,不用Begin Transaction开启事务,当一个事务结束,这个模式会自动启用下一个事务,只用Commit Transaction 提交事务、Rollback Transaction 回滚事务即可。 + +TIPS: + +**事物回滚**: + +xact_abort on/off : 为on时如果当前sql出错,回滚整个事务,为off时如果sql出错回滚当前sql语句,其它语句照常运行读写数据库。 \ No newline at end of file -- Gitee