From 123bad4bcd7de16f2539bd1fc29562637ff173ba Mon Sep 17 00:00:00 2001 From: unknown <2833605196@qq.com> Date: Thu, 29 Sep 2022 12:06:01 +0800 Subject: [PATCH] =?UTF-8?q?06=E9=99=88=E6=A2=85=E9=A6=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2022.09.28\344\275\234\344\270\232.sql" | 33 +++++++++++++++++++ .../2022.09.28\344\272\213\345\212\241.md" | 29 ++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 "06\351\231\210\346\242\205\351\246\231/\344\275\234\344\270\232/2022.09.28\344\275\234\344\270\232.sql" create mode 100644 "06\351\231\210\346\242\205\351\246\231/\347\254\224\350\256\260/2022.09.28\344\272\213\345\212\241.md" diff --git "a/06\351\231\210\346\242\205\351\246\231/\344\275\234\344\270\232/2022.09.28\344\275\234\344\270\232.sql" "b/06\351\231\210\346\242\205\351\246\231/\344\275\234\344\270\232/2022.09.28\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..bbeec65 --- /dev/null +++ "b/06\351\231\210\346\242\205\351\246\231/\344\275\234\344\270\232/2022.09.28\344\275\234\344\270\232.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 diff --git "a/06\351\231\210\346\242\205\351\246\231/\347\254\224\350\256\260/2022.09.28\344\272\213\345\212\241.md" "b/06\351\231\210\346\242\205\351\246\231/\347\254\224\350\256\260/2022.09.28\344\272\213\345\212\241.md" new file mode 100644 index 0000000..bfa16b7 --- /dev/null +++ "b/06\351\231\210\346\242\205\351\246\231/\347\254\224\350\256\260/2022.09.28\344\272\213\345\212\241.md" @@ -0,0 +1,29 @@ +2022.09.28浜嬪姟 + +涓涓簨鍔′腑鐨勬墍鏈 SQL 璇彞锛岃涔堝叏閮ㄦ墽琛屾垚鍔燂紝瑕佷箞鍏ㄩ儴鎵ц澶辫触锛屼笉浼氱粨鏉熷湪涓棿鐨勬煇涓幆鑺傘備簨鍔″湪鎵ц杩囩▼涓彂鐢熼敊璇紝浼氳鍥炴粴锛圧ollback锛夊埌浜嬪姟寮濮嬪墠鐨勭姸鎬侊紝灏卞儚杩欎釜浜嬪姟浠庢潵娌℃湁鎵ц杩囦竴鏍枫 + +##### 2) 涓鑷存 + +鍦ㄤ簨鍔″紑濮嬩箣鍓嶅拰浜嬪姟缁撴潫浠ュ悗锛屾暟鎹簱鐨勫畬鏁存ф病鏈夎鐮村潖銆傝繖琛ㄧず鍐欏叆鐨勬暟鎹繀椤诲畬鍏ㄧ鍚堟墍鏈夌殑棰勮瑙勫垯锛屽叾涓寘鍚暟鎹殑绮剧‘搴︺佷覆鑱旀т互鍙婂悗缁暟鎹簱鍙互鑷彂鎬у湴瀹屾垚棰勫畾鐨勫伐浣溿 + +##### 3) 闅旂鎬 + +鏁版嵁搴撳厑璁稿涓苟鍙戜簨鍔″悓鏃跺鍏舵暟鎹繘琛岃鍐欏拰淇敼鐨勮兘鍔涳紝闅旂鎬у彲浠ラ槻姝㈠涓簨鍔″苟鍙戞墽琛屾椂鐢变簬浜ゅ弶鎵ц鑰屽鑷存暟鎹殑涓嶄竴鑷淬備簨鍔¢殧绂诲垎涓轰笉鍚岀骇鍒紝鍖呮嫭璇绘湭鎻愪氦锛圧ead uncommitted锛夈佽鎻愪氦锛坮ead committed锛夈佸彲閲嶅璇伙紙repeatable read锛夊拰涓茶鍖栵紙Serializable锛夈 姝婚攣 鎿嶄綔绯荤粺 + +##### 4) 鎸佷箙鎬 + +浜嬪姟澶勭悊缁撴潫鍚庯紝瀵规暟鎹殑淇敼灏辨槸姘镐箙鐨勶紝鍗充究绯荤粺鏁呴殰涔熶笉浼氫涪澶便 + +#### 浜嬪姟鍒嗙被 + +**鑷姩鎻愪氦浜嬬墿**锛 鏄疭QL Server榛樿鐨勪竴绉嶄簨鍔℃ā寮忥紝姣忔潯Sql璇彞閮借鐪嬫垚涓涓簨鍔¤繘琛屽鐞嗐 + +**鏄惧紡浜嬪姟**: T-sql鏍囨槑锛岀敱Begin Transaction寮鍚簨鍔″紑濮嬶紝鐢盋ommit Transaction 鎻愪氦浜嬪姟銆丷ollback Transaction 鍥炴粴浜嬪姟缁撴潫銆 + +**闅愬紡浜嬪姟**锛氫娇鐢⊿et IMPLICIT_TRANSACTIONS ON 灏嗗皢闅愬紡浜嬪姟妯″紡鎵撳紑锛屼笉鐢˙egin Transaction寮鍚簨鍔★紝褰撲竴涓簨鍔$粨鏉燂紝杩欎釜妯″紡浼氳嚜鍔ㄥ惎鐢ㄤ笅涓涓簨鍔★紝鍙敤Commit Transaction 鎻愪氦浜嬪姟銆丷ollback Transaction 鍥炴粴浜嬪姟鍗冲彲銆 + +TIPS: + +**浜嬬墿鍥炴粴**锛 + +xact_abort on/off : 涓簅n鏃跺鏋滃綋鍓峴ql鍑洪敊锛屽洖婊氭暣涓簨鍔★紝涓簅ff鏃跺鏋渟ql鍑洪敊鍥炴粴褰撳墠sql璇彞锛屽叾瀹冭鍙ョ収甯歌繍琛岃鍐欐暟鎹簱銆 \ No newline at end of file -- Gitee