diff --git "a/\350\213\217\351\271\212\346\235\203/20241017 \344\272\213\345\212\241\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" "b/\350\213\217\351\271\212\346\235\203/20241017 \344\272\213\345\212\241\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..d071479365af6b43c9fa5681445212f12b9efc2f --- /dev/null +++ "b/\350\213\217\351\271\212\346\235\203/20241017 \344\272\213\345\212\241\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" @@ -0,0 +1,51 @@ +```sql + +create table bank( + id int primary key auto_increment , + username varchar(10), + money int +); + +INSERT INTO `bank` VALUES (1, '张三', 100); +INSERT INTO `bank` VALUES (2, '李四', 200); + + + +## 练习题: + +-- 1, 手动关闭系统全局的全动提交。查询表内容,新增一个自己的帐号,和金额,最后回滚。再查询表内容; +set autocommit = 0; +select * from bank; +INSERT INTO `bank` VALUES (3, '墩子', 300); +rollback; +select * from bank; +-- 2,用 START TRANSACTION 开启事务,查询表内容,把李四的金额改成5000,回滚事务,再查询表内容; +start transaction; +update bank set money = 5000 where id= 2; +select * from bank; +rollback; +select * from bank; +-- 3,用 START TRANSACTION 开启事务,查询表内容,把李四的金额改成5000,提交事务,再查询表内容; +start transaction; +select * from bank; +update bank set money=5000 where id =2; +select * from bank; +commit; +select * from bank; + +-- 4,用 START TRANSACTION 开启事务,查询表内容,把张三的金额改成666,设置保存点s1,用自己姓名添加个新账户,金额888888,设置保存s2,回滚到s1保存点,再查询表内容; +start transaction; +select * from bank; +update bank set money=666 where id =1; +select * from bank; +SAVEPOINT s1; +INSERT INTO `bank` VALUES (4, '小小苏', 88888); +select * from bank; +SAVEPOINT s2; +rollback to s1; +select *from bank; + +-- 5,[作业]创建一个实现银行转账业务的存储过程transfer(),传入合适的参数如转出账户编号,转入账户编号,转账金额,返回是否转账成功。 +-- 提醒.要考虑转出金额不足的情况 +``` +