A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为了防止在查询记录的时候被其他用户更改记录,应该采用什么方法?如何用查询语句实现该方法?

2 个回复

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