社区
MySQL
帖子详情
查询-插入问题。如何保证数据完整性?
madmanahong
2010-12-17 02:02:15
有这么一种情况,就是
1. select .. from .. where..
来查询一个人是否存在
2. insert ..
如果此人存在,那么就插入到另一个表中。
但是由于并发,导致session 2在session 1进行完第一步的时候,将此人删除了。
此时session 1还不知道,造成了session 1执行成功,插入了一条无效的数据(因为此人在session 2已经被删除了)
这种情况如何做呢?
...全文
97
9
打赏
收藏
查询-插入问题。如何保证数据完整性?
有这么一种情况,就是 1. select .. from .. where.. 来查询一个人是否存在 2. insert .. 如果此人存在,那么就插入到另一个表中。 但是由于并发,导致session 2在session 1进行完第一步的时候,将此人删除了。 此时session 1还不知道,造成了session 1执行成功,插入了一条无效的数据(因为此人在session 2已经被删除了) 这种情况如何做呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yun3948
2010-12-23
打赏
举报
回复
完全不懂。都是牛人
Tirecoed
2010-12-22
打赏
举报
回复
[Quote=引用 5 楼 madmanahong 的回复:]
引用 4 楼 iihero 的回复:
将事务隔离级设为可串行化,即可避免此问题。
到底是设置成串行化好呢?还是LOCK TABLES好呢?
[/Quote]
学习!……
iihero_
2010-12-17
打赏
举报
回复
[Quote=引用 5 楼 madmanahong 的回复:]
引用 4 楼 iihero 的回复:
将事务隔离级设为可串行化,即可避免此问题。
到底是设置成串行化好呢?还是LOCK TABLES好呢?
[/Quote]
如果是MyISAM引擎,只能lock tables
如果是InnoDB引擎,可以通过设置隔离级来做。
zuoxingyu
2010-12-17
打赏
举报
回复
照楼主的意思是这样的吧
insert into tb2 select * from tb1 where userid=100;
这样的情况下,执行的过程中会给TB1加表锁,其他连接是不能够进行DELETE的。
madmanahong
2010-12-17
打赏
举报
回复
[Quote=引用 4 楼 iihero 的回复:]
将事务隔离级设为可串行化,即可避免此问题。
[/Quote]
到底是设置成串行化好呢?还是LOCK TABLES好呢?
iihero_
2010-12-17
打赏
举报
回复
[Quote=引用楼主 madmanahong 的回复:]
有这么一种情况,就是
1. select .. from .. where..
来查询一个人是否存在
2. insert ..
如果此人存在,那么就插入到另一个表中。
但是由于并发,导致session 2在session 1进行完第一步的时候,将此人删除了。
此时session 1还不知道,造成了session 1执行成功,插入了一条无效的数据(因为此人在sessio……
[/Quote]
将事务隔离级设为可串行化,即可避免此问题。
zz_d
2010-12-17
打赏
举报
回复
这是 同步 的问题了,在一个 session 获取或修改表的数据前, 先对该表加锁.
楼主可以好好看一下 "lock table" 方面的资料.
ACMAIN_CHM
2010-12-17
打赏
举报
回复
SESSION1, SESSION2 执行的语句都是什么?举例说明。
小小小小周
2010-12-17
打赏
举报
回复
事务或锁机制来实现.
MySQL实操极简入门
内容包括: 1-客户端登录与退出MySQL 2-操作数据库 3-创建表 4-主键 5-主键自增 6-非空 7-修改表 8-
插入
数据 9-修改数据 10-删除数据 11-
查询
数据一 12-
查询
数据二(条件
查询
) 13-
查询
数据三(模糊
查询
) 14-
查询
...
mysql数据库 --
数据完整性
---实体完整性-域完整性-参照完整性
数据完整性
是为了
保证
插入
到数据库中的数据是正确的,防止用户可能的错误输入。
数据完整性
分为实体完整性、域完整性、参照完整性。 2.1实体(行)完整性 (实体完整性中的实体指的是表中的行,因为一行记录对应一个...
Java
保证
数据的完整性
一、
数据完整性
的分类 1、实体完整性 ------
保证
一行数据是有效的 表中的一行数据如果与它所代表的实体完全一致,则具备实体完整性。 实体完整性的主键约束 1)设置主键约束 2)设置唯一约束 ...
MySQL数据库——
数据完整性
(实体完整性、域完整性、参照完整性)
数据完整性
是为了
保证
插入
到数据库中的数据是正确的,防止用户可能的错误输入。
数据完整性
分为实体完整性、域完整性、参照完整性。 2.1实体(行)完整性 (实体完整性中的实体指的是表中的行,因为一行记录对应一个...
数据完整性
数据完整性
是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。为了
保证
插入
到数据库中的数据是正确的,防止用户可能的错误输入。
数据完整性
分为实体完整性、域完整性、参照完整性。 (1)实体完整性...
MySQL
56,677
社区成员
56,708
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章