社区
MySQL
帖子详情
查询-插入问题。如何保证数据完整性?
madmanahong
2010-12-17 02:02:15
有这么一种情况,就是
1. select .. from .. where..
来查询一个人是否存在
2. insert ..
如果此人存在,那么就插入到另一个表中。
但是由于并发,导致session 2在session 1进行完第一步的时候,将此人删除了。
此时session 1还不知道,造成了session 1执行成功,插入了一条无效的数据(因为此人在session 2已经被删除了)
这种情况如何做呢?
...全文
101
9
打赏
收藏
查询-插入问题。如何保证数据完整性?
有这么一种情况,就是 1. select .. from .. where.. 来查询一个人是否存在 2. insert .. 如果此人存在,那么就插入到另一个表中。 但是由于并发,导致session 2在session 1进行完第一步的时候,将此人删除了。 此时session 1还不知道,造成了session 1执行成功,插入了一条无效的数据(因为此人在session 2已经被删除了) 这种情况如何做呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
事务或锁机制来实现.
Tianlesoftware Oracle 学习手册(v1.0)高清完整PDF版
Tianlesoftware Oracle 学习手册(v1.0)
mysql数据库 --
数据完整性
---实体完整性-域完整性-参照完整性
一、
数据完整性
数据完整性
是为了
保证
插入
到数据库中的数据是正确的,防止用户可能的错误输入。
数据完整性
分为实体完整性、域完整性、参照完整性。 2.1实体(行)完整性 (实体完整性中的实体指的是表中的行,因为一行记录对应一个实体) 实体完整性规定表的一行在表中是唯一的实体,不能出现重复。 实体完整性通过表的主键来实现。 主键关键字: primary key 主键特点: 不能为null,并且唯一。 主...
数据完整性
数据完整性
是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。为了
保证
插入
到数据库中的数据是正确的,防止用户可能的错误输入。
数据完整性
分为实体完整性、域完整性、参照完整性。 (1)实体完整性(Entity Integrity)。实体完整性指表中行的完整性。主要用于
保证
操作的数据(记录)非空、唯一且不重复。即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空...
MySQL数据库——
数据完整性
(实体完整性、域完整性、参照完整性)
一、
数据完整性
数据完整性
是为了
保证
插入
到数据库中的数据是正确的,防止用户可能的错误输入。
数据完整性
分为实体完整性、域完整性、参照完整性。 2.1实体(行)完整性 (实体完整性中的实体指的是表中的行,因为一行记录对应一个实体) 实体完整性规定表的一行在表中是唯一的实体,不能出现重复。 实体完整性通过表的主键来实现。 主键关键字: primary key 主键特点: 不能为null,并且唯一。 ...
mysql
插入
之前验证数据的有效性完整性
在实际应用中,数据验证可以通过编程语言中的各种条件语句和函数实现,也可以通过数据库管理系统提供的约束(如 CHECK 约束)直接在数据库层面实施。通过在
插入
数据前进行严格的数据验证,可以显著减少数据相关
问题
,提高数据的质量和准确性。数据验证是确保数据库完整性和一致性的关键步骤。在
插入
数据到数据库之前进行验证,可以防止无效数据的录入,避免可能导致的错误和数据污染。字段必须在18到99岁之间,那么
插入
新顾客信息前应该检查。在
插入
新订单之前,需要确保这两个字段不为空。字段是数值类型,
插入
操作之前需要验证输入的。
MySQL
56,938
社区成员
56,755
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章