通过事务进行管理

首先通过新建长训创建两个表单

DDL

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `createDate` datetime DEFAULT NULL,
  `userName` varchar(20) DEFAULT NULL,
  `pwd` varchar(36) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL,
  `age` tinyint(3) unsigned DEFAULT NULL,
  `sex` char(2) DEFAULT '男',
  `introduce` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
 
CREATE TABLE `result` (
  `rid` int(11) NOT NULL AUTO_INCREMENT COMMENT '成绩编号',
  `testName` varchar(255) DEFAULT NULL COMMENT '测试名称',
  `score` double(4,2) DEFAULT NULL COMMENT '成绩',
  `studentId` int(11) DEFAULT NULL COMMENT '学生id',
  PRIMARY KEY (`rid`),
  KEY `studentId` (`studentId`),
  CONSTRAINT `result_ibfk_1` FOREIGN KEY (`studentId`) REFERENCES `student` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

DML

insert into student values(0,'2024-02-25 10:10:10','赵灵儿','123',
'15612345678',16,'女','逍遥哥哥,你终于找到我了。');
insert into student values(0,'2024-02-25 10:10:10','王语嫣','123',
'15612345678',17,'女','慕容复,我和你不共戴天。');
insert into student values(0,'2024-02-25 10:10:10','龙姑娘','123',
'15612345678',22,'女','我想过过过儿过过的日子。');
insert into student values(0,'2024-02-25 10:10:10','杨过','123',
'15612345678',18,'男','一遇杨过误终身。');
insert into student values(0,'2024-02-25 10:10:10','杨逍','123',
'15612345678',27,'男','杨过跟程英的大儿子。');
insert into student (userName,age,introduce)values('黄衣女子',26,'杨过与龙姑娘的大女儿。');
 
insert into result values(0,'政治',96,1);
insert into result values(0,'地理',86,5);
insert into result values(0,'政治',77,3);
insert into result values(0,'英语',99,3);
insert into result values(0,'历史',22,6);
insert into result values(0,'化学',69,2);
insert into result values(0,'Java',79,5);
insert into result values(0,'Java',67,6);
insert into result values(0,'政治',97,2);
insert into result values(0,'物理',76,6);
insert into result values(0,'物理',82,2);
insert into result values(0,'化学',56,4);

执行语句

update student set userName='杨逍' where id=5;
#开启事务
begin;#开启事务之后的所有操作都在内存中,硬盘未写入
update student set userName='流氓一般的渣男' where id=5;
select * from student where id=5;
update student set userName='杨大渣男' where id=4;
select * from student where id=4;
rollback;#回滚操作-取消事务
commit;#提交操作,将数据通过io的方式写入硬盘。
  1. 原子性(Atomicity):事务是一个不可分割的工作单位。在同一个事务中的操作要么全部成功,要么全部失败。例如,如果在一个事务中执行了多个 SQL 语句,要么所有语句都执行成功,要么所有语句都执行失败。这确保了数据的一致性和完整性。

  2. 一致性(Consistency):事务执行前后,数据库的状态必须保持一致。换句话说,事务按照预期生效,数据的状态是预期的状态。例如,如果张三向李四转账100元,转账前和转账后的数据应该是正确的状态,否则就没有达到一致性。

  3. 隔离性(Isolation):当多个用户并发访问数据库时,数据库为每一个用户开启的事务不能被其他事务的操作数据所干扰。这确保了并发执行的事务之间相互隔离,避免了数据混乱。

  4. 持久性(Durability):一旦事务被提交,对数据库中数据的改变就是永久性的。即使数据库发生故障,也不应该对其有任何影响。例如,在使用 JDBC 操作数据库时,在提交事务后,即使数据库出现问题,事务也必须完全执行完成,以确保数据的持久性。

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值