“脏数据”问题怎么解决?

JGH8041 2010-05-16 10:49:39
RT
...全文
720 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnfan 2012-06-20
  • 打赏
  • 举报
回复
LZ的意思可能是:多人同时修改的问题。
xuan.ye 2012-06-20
  • 打赏
  • 举报
回复
其实你这个脏数据,得看情况,如果是两条同样的数据,也需要考虑用户反复提交造成的,这样就得靠js来解决
stepday 2010-05-18
  • 打赏
  • 举报
回复
程序中的事物处理
JGH8041 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 newdigitime 的回复:]
用数据库默认的锁,就不会出现脏数据.
[/Quote]

也就是说在数据库级不用我做什么了吧?
newdigitime 2010-05-18
  • 打赏
  • 举报
回复
用数据库默认的锁,就不会出现脏数据.
fanlose2 2010-05-18
  • 打赏
  • 举报
回复
赶紧查了一下“脏数据”。http://baike.baidu.com/view/1445322.htm?fr=ala0_1
解决方法:
添加一个时间戳的字段,当每次操作这条记录时检索出相关信息和时间戳的值,保存时在比较取出的时间戳的值和当前的数据库的时间戳时是否相等,如果相等再保存到数据库中,如果不等提示信息。

update tablename set field1='A' where ids=1 and 时间戳值=取出的值



antony1029 2010-05-18
  • 打赏
  • 举报
回复
做WEB能有做线程的权限吗?
iis运行就是一个进程啊。进程下面才是线程啊。
JGH8041 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sp1234 的回复:]
赶紧擦干净嘛!
[/Quote]

不纯了,擦不干净了!
JGH8041 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 jack15850798154 的回复:]
如果是SQL 建议采用事务和锁的概念
如果在程序中 线程并发处理,锁的概念。。
[/Quote]

一般情况下,两个问题都会出现。

做WEB能有做线程的权限吗?
ztmdsbt 2010-05-17
  • 打赏
  • 举报
回复
请问什么叫"脏数据"?
SK_Aqi 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyq11 的回复:]
并发操作使用锁机制
begin tran
waitfor delay '00:00:30';
commit tran
begin tran

commit tran
SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除
SELECT * FROM table WITH (TABLOCKX) 其他事务……
[/Quote]
学习
dongqi0517 2010-05-17
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:教您
jack15850798154 2010-05-17
  • 打赏
  • 举报
回复
如果是SQL 建议采用事务和锁的概念
如果在程序中 线程并发处理,锁的概念。。
flyingyinjun 2010-05-17
  • 打赏
  • 举报
回复
脏数据就是读了数据库中不存在的记录,说白了就是读了未提交的数据
还是那句话,并发 加锁
不是在数据库里还是在程序里,是数据库管理系统已经自动帮你解决了的,并发控制 加锁说的是数据库管理系统的理论控制问题
chai1338 2010-05-16
  • 打赏
  • 举报
回复
不是很懂
tan124 2010-05-16
  • 打赏
  • 举报
回复
并发操作使用锁机制
begin tran
waitfor delay '00:00:30';
commit tran
begin tran

commit tran
SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除
SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除
HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。
NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。

不错
chenyu112 2010-05-16
  • 打赏
  • 举报
回复
支持1楼
wuyq11 2010-05-16
  • 打赏
  • 举报
回复
并发操作使用锁机制
begin tran
waitfor delay '00:00:30';
commit tran
begin tran

commit tran
SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除
SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除
HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。
NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。
flyingyinjun 2010-05-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jgh8041 的回复:]
引用 1 楼 aspwebchh 的回复:
并发控制 加锁


在数据库里还是在程序里?
[/Quote]
不是在数据库里还是在程序里,是数据库管理系统已经自动帮你解决了的,并发控制 加锁说的是数据库管理系统的理论控制问题
flyingyinjun 2010-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aspwebchh 的回复:]
并发控制 加锁
[/Quote]
并保证先写事务日志,再写数据库原则
加载更多回复(9)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧