黑马程序员技术交流社区

标题: 为了防止在查询记录的时候被其他用户更改记录,应该采用什么方法? [打印本页]

作者: 郭炜    时间: 2012-3-14 11:24
标题: 为了防止在查询记录的时候被其他用户更改记录,应该采用什么方法?
为了防止在查询记录的时候被其他用户更改记录,应该采用什么方法?如何用查询语句实现该方法?
作者: 潘许超    时间: 2012-3-14 11:37
添加一个“时间戳”类型的字段就可以了。timestamp这种数据类型会根据当前时间自动产生一个时间字符串,确保这些数据在数据库中是唯一的,timestamp一般用给表行加版本戳的机制,存储大小为8个字节,一个表只能有一个timestamp列。每次插入或更新包含timestamp列的行的时,timestamp列中的值均会更新,这一属性使timestamp列不适合作为键使用,尤其不能作为主键使用,对行的任何更新都会更改timestamp值,从而更改键值。
作者: 冯林    时间: 2012-3-14 11:41
你可以利用事务ACDI特性实现,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability).
一、原子性意味着数据库中的事务执行是作为原子。即不可再分,整个语句要么执行,要么不执行。
二、一致性,即在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
一致性分为两个层面
1.数据库机制层面
数据库层面的一致性是,在一个事务执行之前和之后,数据会符合你设置的约束(唯一约束,外键约束,Check约束等)和触发器设置.
2.业务层面
对于业务层面来说,一致性是保持业务的一致性.这个业务一致性需要由开发人员进行保证.很多业务方面的一致性可以通过转移到数据库机制层面进行保证.比如,产品只有两个型号,则可以转移到使用CHECK约束使某一列必须只能存这两个型号.
三、隔离性。事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
四、持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
所以利用事务的隔离性,可以实现你的要求。{:soso_e112:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2