日期:2014-05-16 浏览次数:20547 次
在学生信息管理系统中,每一个修改操作的执行过程都是先删除原记录而后重新写入。以修改学籍为例:若修改后的学籍信息中的学号已存在,那么修改操作失败。但是原纪录却被删除了,这样就造成再次修改本条信息时没有记录删除,于是系统报错。
同学的博客《学生信息管理系统问题汇总》(http://blog.csdn.net/hejingyuan6/article/details/7831503)中对该问题的处理是标记保存修改的次数来判断是否执行对原纪录删除的操作。逻辑如下图:
这样做能够解决二次修改的问题。但是,如果我在第一次修改不成功之后放弃修改,此时被我修改过的记录就被删除了,相当于对该记录执行了删除操作。通过分析要解决这个问题,就是写一个类似SQL Server中的“事务”的机制:整个过程都成功了才成功修改,有一步错就失败对数据的操作回到“事务”执行之前。实际操作是在原记录删除之前先把该记录备份到一个数组当中,在删除之后判断修改后的记录是否已存在。存在的话把备份中的记录写回数据库中,不存在则把修改后的记录写数据库中。逻辑如下图:
这样的处理应该可以比较好的解决学生信息管理系统中修改的问题!