diff --git "a/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/9-28\344\275\234\344\270\232.sql" "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/9-28\344\275\234\344\270\232.sql" new file mode 100644 index 0000000000000000000000000000000000000000..bcb2533cf396e6065083406953cc11aa1537526c --- /dev/null +++ "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/9-28\344\275\234\344\270\232.sql" @@ -0,0 +1,80 @@ + +select * from AccountInfo --个人信息 +select * from BankCard --银行卡信息 +select * from CardStateChange --银行卡状态更改表 +select * from CardTransfer --转账表 +select * from CardExchange --交易记录 + +--1.--假设刘备取款6000,(添加check约束,设置账户余额必须>=0),要求:使用事务实现,修改余额和添加取款记录两步操作使用事务 + +--事务 +--开始事务 begin transaction , begin tran +begin transaction A + +declare @goods varchar(10) = '刘备' +declare @AccountCode varchar(20) = (select AccountCode from AccountInfo where RealName='刘备') +--取款 +update BankCard set CardMoney -= (6000) where AccountId = 1 +insert into CardExchange values(@AccountCode,0,6000,getdate()) + +--添加check约束 设置账户余额必须>=0 +alter table BankCard add constraint CK_Money check(CardState >= 0) + + + + +--2.--刘备向张飞转账1000元,(添加check约束,设置账户余额必须>=0) +--事务 +--开始事务 begin transaction , begin tran +begin transaction B + +declare @CardNoOut varchar(20)=( +select B.CardNo from AccountInfo A +join BankCard B on B.AccountId=A.AccountId +where A.RealName='刘备' +) + +declare @CardNoIn varchar(20)=( +select B.CardNo from AccountInfo A +join BankCard B on B.AccountId=A.AccountId +where A.RealName='张飞' +) +insert into CardTransfer values(@CardNoOut,@CardNoIn,1000,getdate()) +--添加check约束,设置账户余额必须>=0 +alter table BankCard add constraint CK_Money check(CardState >= 0) + +--2.--刘备向张飞转账1000元 +update BankCard set CardMoney-=(1000) where BankCard.AccountId = ( + +select B.AccountId from AccountInfo A +join BankCard B on B.AccountId=A.AccountId +where A.RealName='刘备' +) + +update BankCard set CardMoney+=(1000) where BankCard.AccountId = ( + +select B.AccountId from AccountInfo A +join BankCard B on B.AccountId=A.AccountId +where A.RealName='张飞' +) + + + + + + +select * from CardTransfer --交易记录 + + + +/* + +--转账信息表(存储转账信息记录) +create table CardTransfer +( + TransferId int primary key identity(1,1),--转账自动编号 + CardNoOut varchar(30) not null, --转出银行卡号(与银行卡表形成主外键关系) + CardNoIn varchar(30) not null, --转入银行卡号(与银行卡表形成主外键关系) + TransferMoney money not null,--交易金额 + TransferTime smalldatetime not null, --交易时间 +)*/ \ No newline at end of file diff --git "a/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/9-28\347\254\224\350\256\260.md" "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/9-28\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..c791c1ab55b3176589591d2d527ab8f26bfd7b7b --- /dev/null +++ "b/27\345\217\267\350\265\265\346\265\251\346\225\217/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/9-28\347\254\224\350\256\260.md" @@ -0,0 +1,71 @@ +# **涓涓簨鍔″氨鏄竴涓畬鏁寸殑涓氬姟閫昏緫銆 + +# 鏄竴涓渶灏忕殑宸ヤ綔鍗曞厓锛屼笉鍙啀鍒嗐** + +------ + +**浠涔堟槸涓涓畬鏁寸殑涓氬姟閫昏緫锛** + +渚嬶細 + 鍋囪杞处,浠嶢璐︽埛鍚態璐︽埛涓浆璐10000銆 + 灏咥璐︽埛鐨勯挶鍑忓幓10000锛坲pdate璇彞锛 + 灏咮璐︽埛鐨勯挶鍔犱笂10000锛坲pdate璇彞锛 + 杩欏氨鏄竴涓畬鏁寸殑涓氬姟閫昏緫銆 + +浠ヤ笂鎿嶄綔鏄竴涓渶灏忕殑宸ヤ綔鍗曞厓锛岃涔堝悓鏃舵垚鍔燂紝瑕佷箞鍚屾椂澶辫触锛屼笉鍙啀鍒嗐 + 杩欎袱涓猽pdate璇彞瑕佹眰蹇呴』鍚屾椂鎴愬姛鎴栬呭悓鏃跺け璐ワ紝杩欐牱鎵嶈兘淇濊瘉閽辨槸姝g‘鐨勩 + +鍙湁DML璇彞鎵嶄細鏈変簨鍔¤繖涓璇达紝鍏朵粬璇彞鍜屼簨鍔℃棤鍏 + insert + delete + update + 鍙湁浠ヤ笂涓変釜璇彞鏄鏁版嵁搴撹〃涓暟鎹繘琛屽銆佸垹銆佹敼鐨勩 + +鍙浣犵殑鎿嶄綔涓鏃︽秹鍙婂埌鏁版嵁鐨勫銆佸垹銆佹敼锛岄偅涔堝氨涓瀹氳鑰冭檻瀹夊叏闂銆 + +------ + +**姝f槸鍥犱负鍋氭煇浠朵簨鐨勬椂鍊欙紝闇瑕佸鏉ML璇彞鍏卞悓鑱斿悎璧锋潵鎵嶈兘瀹屾垚锛屾墍浠ラ渶瑕佷簨鍔$殑瀛樺湪銆傚鏋滀换浣曚竴浠跺鏉傜殑浜嬪効閮借兘涓鏉ML璇彞鎼炲畾锛岄偅涔堜簨鍔″垯娌℃湁瀛樺湪鐨勪环鍊间簡銆** + +涓涓簨鍔″叾瀹炲氨鏄鏉ML璇彞鍚屾椂鎴愬姛锛屾垨鑰呭悓鏃跺け璐! + +浜嬪姟锛氬氨鏄壒閲忕殑DML璇彞鍚屾椂鎴愬姛锛屾垨鑰呭悓鏃跺け璐! + +------ + +**浜嬪姟鏄庝箞鍋氬埌澶氭潯DML璇彞鍚屾椂鎴愬姛鍜屽悓鏃跺け璐ョ殑鍛?** + +InnoDB瀛樺偍寮曟搸锛氭彁渚涗竴缁勭敤鏉ヨ褰曚簨鍔℃ф椿鍔ㄧ殑鏃ュ織鏂囦欢 + 浜嬪姟寮鍚簡: + insert + insert + insert + delete + update + update + update + 浜嬪姟缁撴潫浜嗐 + +鍦ㄤ簨鍔$殑鎵ц杩囩▼涓紝姣忎竴鏉ML鐨勬搷浣滈兘浼氳褰曞埌鈥滀簨鍔℃ф椿鍔ㄧ殑鏃ュ織鏂囦欢鈥濅腑銆 + 鍦ㄤ簨鍔$殑鎵ц杩囩▼涓紝鎴戜滑鍙互鎻愪氦浜嬪姟锛屼篃鍙互鍥炴粴浜嬪姟銆 + +- 鎻愪氦浜嬪姟锛 + 娓呯┖浜嬪姟鎬ф椿鍔ㄧ殑鏃ュ織鏂囦欢锛屽皢鏁版嵁鍏ㄩ儴褰诲簳鎸佷箙鍖栧埌鏁版嵁搴撹〃涓 + 鎻愪氦浜嬪姟鏍囧織鐫锛屼簨鍔$殑缁撴潫銆傚苟涓旀槸涓绉嶅叏閮ㄦ垚鍔熺殑缁撴潫銆 +- 鍥炴粴浜嬪姟锛 + 灏嗕箣鍓嶆墍鏈夌殑DML鎿嶄綔鍏ㄩ儴鎾ら攢锛屽苟涓旀竻绌轰簨鍔℃ф椿鍔ㄧ殑鏃ュ織鏂囦欢 + 鍥炴粴浜嬪姟鏍囧織鐫锛屼簨鍔$殑缁撴潫銆傚苟涓旀槸涓绉嶅叏閮ㄥけ璐ョ殑缁撴潫銆 + +**鎻愪氦浜嬪姟锛屽洖婊氫簨鍔** + +鎻愪氦浜嬪姟: commit; 璇彞 + 鍥炴粴浜嬪姟: rollback; 璇彞锛堝洖婊氭案杩滃彧鑳藉洖婊氬埌涓婁竴娆$殑鎻愪氦鐐癸級 + 浜嬪姟瀵瑰簲鐨勮嫳璇崟璇嶆槸: transaction + +mysql涓粯璁よ嚜鍔ㄦ彁浜や簨鍔★紝姣忔墽琛屼竴鏉ML璇彞锛屾彁浜や竴娆★紙浼氬鑷磖ollback娌℃湁鏁堟灉锛 + +鍏抽棴mysql鑷姩鎻愪氦鏈哄埗 + 鎵ц鍛戒护锛歴tart transaction; + + +