diff --git "a/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\345\255\231\346\226\207\350\243\225/.keep" "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\345\255\231\346\226\207\350\243\225/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\345\255\231\346\226\207\350\243\225/\345\255\231\346\226\207\350\243\225/bb.sql" "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\345\255\231\346\226\207\350\243\225/\345\255\231\346\226\207\350\243\225/bb.sql" new file mode 100644 index 0000000000000000000000000000000000000000..17dc61bcc56391a21f1818df77f03a5a42f3f8ee --- /dev/null +++ "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\345\255\231\346\226\207\350\243\225/\345\255\231\346\226\207\350\243\225/bb.sql" @@ -0,0 +1,107 @@ +-- 以下题目全部用事务实现: +-- 1.存钱(给定参数:银行账户,存钱金额) +-- 要求:修改余额,添加存款记录 +DROP PROCEDURE if EXISTS pro_in; +delimiter $$ +CREATE PROCEDURE pro_in(pro_id int,pro_money DECIMAL(10,2)) +aa:BEGIN +DECLARE flag int DEFAULT 0; +DECLARE CONTINUE HANDLER for SQLEXCEPTION set flag=1; + +START TRANSACTION; +#存钱 +UPDATE bankcard set CardMoney = CardMoney + pro_money WHERE CardId = pro_id; +if ROW_COUNT() <= 0 THEN +SELECT '回滚111'; +ROLLBACK; +LEAVE aa; +END if; + +#插入记录 +INSERT into cardexchange(CardId,MoneyInBank,MoneyOutBank,ExchangeTime) +VALUE(pro_id,pro_money,0,NOW()); + +if flag=0 then +SELECT 'COMMIT'; +COMMIT; +ELSE +SELECT 'ROLLBACK2'; +ROLLBACK; +END if; + +END; +$$ +delimiter ; + +CALL pro_in(1,2000); + + +-- 2.取钱(给定参数:银行账户,密码,取钱金额) +-- 要求:1.添加触发器约束:余额不能小于0 +-- 2.修改余额,添加取款记录 +drop trigger if EXISTS before_bankcard_update; +create TRIGGER before_bankcard_update BEFORE UPDATE on bankcard for each ROW +BEGIN + IF new.cardmoney < 0 THEN + SIGNAL SQLSTATE 'HY000' set MESSAGE_TEXT = '资金不能为负数'; + end if; +END; + + +DROP PROCEDURE if EXISTS pro_out; +delimiter $$ +CREATE PROCEDURE pro_out(pro_outid int,pro_money DECIMAL(10,2)) +aa:BEGIN +DECLARE flag int DEFAULT 0; +DECLARE CONTINUE HANDLER for SQLEXCEPTION set flag=1; + +START TRANSACTION; + +UPDATE bankcard set CardMoney = CardMoney - pro_money WHERE CardId = pro_outid and CardMoney > pro_money; + +if ROW_COUNT() <= 0 THEN +SELECT '回滚2222'; +ROLLBACK; +LEAVE aa; +END if; + +#插入记录 +INSERT into cardexchange(CardId,MoneyInBank,MoneyOutBank,ExchangeTime) +VALUE(pro_outid,0,pro_money,NOW()); + +if flag=0 then +SELECT 'COMMIT'; +COMMIT; +ELSE +SELECT 'ROLLBACK3333'; +ROLLBACK; +END if; +END; +$$ +delimiter ; + +CALL pro_out(4,3000); + + +-- 3.卡片清理: 没个用户只能有一张卡 +-- 每个用户以余额最高的卡为主卡,其他的卡余额全部转移到主卡上,并注销非主卡。卡转账要有转账记录 +-- 并同时升级主卡密码为8位以上(添0处理)(已经是8位及以上的不用处理), +-- 比如:12345升级为12345000 +-- 123456789不处理 + + +-------------------------太难了,不会-------------------- +CREATE PROCEDURE kk() +BEGIN + + + + + + + + +END + + + diff --git "a/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\203\241\346\264\245\345\215\216/.keep" "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\203\241\346\264\245\345\215\216/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\203\241\346\264\245\345\215\216/\350\203\241\346\264\245\345\215\216/bb.sql" "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\203\241\346\264\245\345\215\216/\350\203\241\346\264\245\345\215\216/bb.sql" new file mode 100644 index 0000000000000000000000000000000000000000..17dc61bcc56391a21f1818df77f03a5a42f3f8ee --- /dev/null +++ "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\203\241\346\264\245\345\215\216/\350\203\241\346\264\245\345\215\216/bb.sql" @@ -0,0 +1,107 @@ +-- 以下题目全部用事务实现: +-- 1.存钱(给定参数:银行账户,存钱金额) +-- 要求:修改余额,添加存款记录 +DROP PROCEDURE if EXISTS pro_in; +delimiter $$ +CREATE PROCEDURE pro_in(pro_id int,pro_money DECIMAL(10,2)) +aa:BEGIN +DECLARE flag int DEFAULT 0; +DECLARE CONTINUE HANDLER for SQLEXCEPTION set flag=1; + +START TRANSACTION; +#存钱 +UPDATE bankcard set CardMoney = CardMoney + pro_money WHERE CardId = pro_id; +if ROW_COUNT() <= 0 THEN +SELECT '回滚111'; +ROLLBACK; +LEAVE aa; +END if; + +#插入记录 +INSERT into cardexchange(CardId,MoneyInBank,MoneyOutBank,ExchangeTime) +VALUE(pro_id,pro_money,0,NOW()); + +if flag=0 then +SELECT 'COMMIT'; +COMMIT; +ELSE +SELECT 'ROLLBACK2'; +ROLLBACK; +END if; + +END; +$$ +delimiter ; + +CALL pro_in(1,2000); + + +-- 2.取钱(给定参数:银行账户,密码,取钱金额) +-- 要求:1.添加触发器约束:余额不能小于0 +-- 2.修改余额,添加取款记录 +drop trigger if EXISTS before_bankcard_update; +create TRIGGER before_bankcard_update BEFORE UPDATE on bankcard for each ROW +BEGIN + IF new.cardmoney < 0 THEN + SIGNAL SQLSTATE 'HY000' set MESSAGE_TEXT = '资金不能为负数'; + end if; +END; + + +DROP PROCEDURE if EXISTS pro_out; +delimiter $$ +CREATE PROCEDURE pro_out(pro_outid int,pro_money DECIMAL(10,2)) +aa:BEGIN +DECLARE flag int DEFAULT 0; +DECLARE CONTINUE HANDLER for SQLEXCEPTION set flag=1; + +START TRANSACTION; + +UPDATE bankcard set CardMoney = CardMoney - pro_money WHERE CardId = pro_outid and CardMoney > pro_money; + +if ROW_COUNT() <= 0 THEN +SELECT '回滚2222'; +ROLLBACK; +LEAVE aa; +END if; + +#插入记录 +INSERT into cardexchange(CardId,MoneyInBank,MoneyOutBank,ExchangeTime) +VALUE(pro_outid,0,pro_money,NOW()); + +if flag=0 then +SELECT 'COMMIT'; +COMMIT; +ELSE +SELECT 'ROLLBACK3333'; +ROLLBACK; +END if; +END; +$$ +delimiter ; + +CALL pro_out(4,3000); + + +-- 3.卡片清理: 没个用户只能有一张卡 +-- 每个用户以余额最高的卡为主卡,其他的卡余额全部转移到主卡上,并注销非主卡。卡转账要有转账记录 +-- 并同时升级主卡密码为8位以上(添0处理)(已经是8位及以上的不用处理), +-- 比如:12345升级为12345000 +-- 123456789不处理 + + +-------------------------太难了,不会-------------------- +CREATE PROCEDURE kk() +BEGIN + + + + + + + + +END + + + diff --git "a/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\277\252\345\212\233\344\272\232\345\260\224/.keep" "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\277\252\345\212\233\344\272\232\345\260\224/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\277\252\345\212\233\344\272\232\345\260\224/\350\277\252\345\212\233\344\272\232\345\260\224/bb.sql" "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\277\252\345\212\233\344\272\232\345\260\224/\350\277\252\345\212\233\344\272\232\345\260\224/bb.sql" new file mode 100644 index 0000000000000000000000000000000000000000..17dc61bcc56391a21f1818df77f03a5a42f3f8ee --- /dev/null +++ "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\350\277\252\345\212\233\344\272\232\345\260\224/\350\277\252\345\212\233\344\272\232\345\260\224/bb.sql" @@ -0,0 +1,107 @@ +-- 以下题目全部用事务实现: +-- 1.存钱(给定参数:银行账户,存钱金额) +-- 要求:修改余额,添加存款记录 +DROP PROCEDURE if EXISTS pro_in; +delimiter $$ +CREATE PROCEDURE pro_in(pro_id int,pro_money DECIMAL(10,2)) +aa:BEGIN +DECLARE flag int DEFAULT 0; +DECLARE CONTINUE HANDLER for SQLEXCEPTION set flag=1; + +START TRANSACTION; +#存钱 +UPDATE bankcard set CardMoney = CardMoney + pro_money WHERE CardId = pro_id; +if ROW_COUNT() <= 0 THEN +SELECT '回滚111'; +ROLLBACK; +LEAVE aa; +END if; + +#插入记录 +INSERT into cardexchange(CardId,MoneyInBank,MoneyOutBank,ExchangeTime) +VALUE(pro_id,pro_money,0,NOW()); + +if flag=0 then +SELECT 'COMMIT'; +COMMIT; +ELSE +SELECT 'ROLLBACK2'; +ROLLBACK; +END if; + +END; +$$ +delimiter ; + +CALL pro_in(1,2000); + + +-- 2.取钱(给定参数:银行账户,密码,取钱金额) +-- 要求:1.添加触发器约束:余额不能小于0 +-- 2.修改余额,添加取款记录 +drop trigger if EXISTS before_bankcard_update; +create TRIGGER before_bankcard_update BEFORE UPDATE on bankcard for each ROW +BEGIN + IF new.cardmoney < 0 THEN + SIGNAL SQLSTATE 'HY000' set MESSAGE_TEXT = '资金不能为负数'; + end if; +END; + + +DROP PROCEDURE if EXISTS pro_out; +delimiter $$ +CREATE PROCEDURE pro_out(pro_outid int,pro_money DECIMAL(10,2)) +aa:BEGIN +DECLARE flag int DEFAULT 0; +DECLARE CONTINUE HANDLER for SQLEXCEPTION set flag=1; + +START TRANSACTION; + +UPDATE bankcard set CardMoney = CardMoney - pro_money WHERE CardId = pro_outid and CardMoney > pro_money; + +if ROW_COUNT() <= 0 THEN +SELECT '回滚2222'; +ROLLBACK; +LEAVE aa; +END if; + +#插入记录 +INSERT into cardexchange(CardId,MoneyInBank,MoneyOutBank,ExchangeTime) +VALUE(pro_outid,0,pro_money,NOW()); + +if flag=0 then +SELECT 'COMMIT'; +COMMIT; +ELSE +SELECT 'ROLLBACK3333'; +ROLLBACK; +END if; +END; +$$ +delimiter ; + +CALL pro_out(4,3000); + + +-- 3.卡片清理: 没个用户只能有一张卡 +-- 每个用户以余额最高的卡为主卡,其他的卡余额全部转移到主卡上,并注销非主卡。卡转账要有转账记录 +-- 并同时升级主卡密码为8位以上(添0处理)(已经是8位及以上的不用处理), +-- 比如:12345升级为12345000 +-- 123456789不处理 + + +-------------------------太难了,不会-------------------- +CREATE PROCEDURE kk() +BEGIN + + + + + + + + +END + + + diff --git "a/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\351\273\204\345\274\272/.keep" "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\351\273\204\345\274\272/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\351\273\204\345\274\272/\351\273\204\345\274\272/bb.sql" "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\351\273\204\345\274\272/\351\273\204\345\274\272/bb.sql" new file mode 100644 index 0000000000000000000000000000000000000000..17dc61bcc56391a21f1818df77f03a5a42f3f8ee --- /dev/null +++ "b/\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232/\351\273\204\345\274\272/\351\273\204\345\274\272/bb.sql" @@ -0,0 +1,107 @@ +-- 以下题目全部用事务实现: +-- 1.存钱(给定参数:银行账户,存钱金额) +-- 要求:修改余额,添加存款记录 +DROP PROCEDURE if EXISTS pro_in; +delimiter $$ +CREATE PROCEDURE pro_in(pro_id int,pro_money DECIMAL(10,2)) +aa:BEGIN +DECLARE flag int DEFAULT 0; +DECLARE CONTINUE HANDLER for SQLEXCEPTION set flag=1; + +START TRANSACTION; +#存钱 +UPDATE bankcard set CardMoney = CardMoney + pro_money WHERE CardId = pro_id; +if ROW_COUNT() <= 0 THEN +SELECT '回滚111'; +ROLLBACK; +LEAVE aa; +END if; + +#插入记录 +INSERT into cardexchange(CardId,MoneyInBank,MoneyOutBank,ExchangeTime) +VALUE(pro_id,pro_money,0,NOW()); + +if flag=0 then +SELECT 'COMMIT'; +COMMIT; +ELSE +SELECT 'ROLLBACK2'; +ROLLBACK; +END if; + +END; +$$ +delimiter ; + +CALL pro_in(1,2000); + + +-- 2.取钱(给定参数:银行账户,密码,取钱金额) +-- 要求:1.添加触发器约束:余额不能小于0 +-- 2.修改余额,添加取款记录 +drop trigger if EXISTS before_bankcard_update; +create TRIGGER before_bankcard_update BEFORE UPDATE on bankcard for each ROW +BEGIN + IF new.cardmoney < 0 THEN + SIGNAL SQLSTATE 'HY000' set MESSAGE_TEXT = '资金不能为负数'; + end if; +END; + + +DROP PROCEDURE if EXISTS pro_out; +delimiter $$ +CREATE PROCEDURE pro_out(pro_outid int,pro_money DECIMAL(10,2)) +aa:BEGIN +DECLARE flag int DEFAULT 0; +DECLARE CONTINUE HANDLER for SQLEXCEPTION set flag=1; + +START TRANSACTION; + +UPDATE bankcard set CardMoney = CardMoney - pro_money WHERE CardId = pro_outid and CardMoney > pro_money; + +if ROW_COUNT() <= 0 THEN +SELECT '回滚2222'; +ROLLBACK; +LEAVE aa; +END if; + +#插入记录 +INSERT into cardexchange(CardId,MoneyInBank,MoneyOutBank,ExchangeTime) +VALUE(pro_outid,0,pro_money,NOW()); + +if flag=0 then +SELECT 'COMMIT'; +COMMIT; +ELSE +SELECT 'ROLLBACK3333'; +ROLLBACK; +END if; +END; +$$ +delimiter ; + +CALL pro_out(4,3000); + + +-- 3.卡片清理: 没个用户只能有一张卡 +-- 每个用户以余额最高的卡为主卡,其他的卡余额全部转移到主卡上,并注销非主卡。卡转账要有转账记录 +-- 并同时升级主卡密码为8位以上(添0处理)(已经是8位及以上的不用处理), +-- 比如:12345升级为12345000 +-- 123456789不处理 + + +-------------------------太难了,不会-------------------- +CREATE PROCEDURE kk() +BEGIN + + + + + + + + +END + + +