php里如果二个人同时操一个数据库里表的字段,怎么避免

比例,php里,现在有两个管理员同时修改一个字段,a管理员把字段里值改1,b管理员把字段里值改2,那这个字段的值到低改成什么了,同时到达服务器数据库,没有先后顺序的,这种... 比例,php里,现在有两个管理员同时修改一个字段,a管理员把字段里值改1, b管理员把字段里值改2,那这个字段的值到低改成什么了,同时到达服务器数据库,没有先后顺序的,这种要怎么避免,可不可以用一个排名的操作, 展开
 我来答
hwt87802887
推荐于2017-10-06 · TA获得超过194个赞
知道小有建树答主
回答量:606
采纳率:50%
帮助的人:258万
展开全部
首先,这个问题只有在特殊情况下才算是问题,大多数情况下可以不作考虑。
然后,这是问题很难描述清楚,解决方案有多种,下面提供一种较方便易用的方式
场景(问题)描述如下:
0,用户A、B同时打开一个页面,页面显示,客户表T_CUSTOMER字段(C_NAME、C_AGE)
姓名:张三,年龄:25
1,A 将姓名“张三”改为“张三1”,然后保存
2,B 将年龄“25”改为“30”,然后保存
这样A的操作就被覆盖了,姓名又变回“张三”了,大家一般怎么处处这种情况?
这里给出一个较易用的解决方案
给表添加一字段:LAST_UPDATE,即最后更新时间
回放场景
0,用户A、B同时打开一页面,面页显示:
姓名:张三,年龄:25,LAST_UPDATE:2008-10-17 13:45:00
1,A 将姓名“张三”改为“张三1”,然后保存
重点在这里:更新数据时WHERE条件里多一条件:AND LAST_UPDATE = '2008-10-17 13:45:00'
更新成功,此时触发器会将当前时间“2008-10-17 13:46:00”赋值给LAST_UPDATE
2,B 将将年龄“25”改为“30”,然后保存
B更新数据时WHERE条件里也有这个条件:AND LAST_UPDATE = '2008-10-17 13:45:00',但此时LAST_UPDATE的值已经在A修改记录时变成2008-10-17 13:46:00
下面要做的就是给出提示了:喔哟,此信息在你发呆这段时间已被人改过啦,所以你需要返工。
触发器代码如下:
===================================================
CREATE OR REPLACE TRIGGER T_CUSTOMER
BEFORE UPDATE ON T_CUSTOMER
FOR EACH ROW
/*
记录最后修改时间
*/
BEGIN
:NEW.LAST_UPDATE := SYSDATE;
END;
===================================================
如果触发器不熟悉或者只是不喜欢用触发器,完全可以修改记录时同时给LAST_UPDATE字段赋值,以此替代触发器的作用。
追问
我说是同时操作啊,我就是特殊情况,你说是先是A操作了,然后B去操作,现在安2008-10-17 13:46:00,AB都这个时间更新,修改同个字段,A改名字为张三1,B改名字为张三2,那到底改成什么了
追答
同时在时分秒 毫秒提交的机率啊。。。
tsotsi
2014-11-19 · TA获得超过940个赞
知道小有建树答主
回答量:1367
采纳率:55%
帮助的人:696万
展开全部
不用考虑这个

因为数据一般情况下不会出现你说的没有先后顺序的情况。
php你可以使用文件锁来避免你说的情况。
flock
随便建个文件

一个人操作时,如果文件能打开,就加上锁,然后进行下面的操作,结束后解除锁。不能打开就等待或返回失败
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7a70df5
2014-11-18 · TA获得超过109个赞
知道答主
回答量:18
采纳率:0%
帮助的人:30.3万
展开全部
你这问题本身是有矛盾的。写入操作必然有一个顺序,不可能出现同时写的情况,因为写的时候会加锁,在这个写锁的生存周期里,其它连接可以读但不可以写。字段最后的值是哪一个只能是由最后写入的值决定。猜测楼主你的意思应该是指并发问题,比如类似于抢购限定数量的商品(或其它什么券),如何不出现实际发放的数量不多于限定数量的问题。如果是这种情况,你可以看一下这里http://blog.csdn.net/liangpei2008/article/details/7920397
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
话风水
2014-11-21
知道答主
回答量:50
采纳率:0%
帮助的人:12.5万
展开全部
在服务器端设上一个lock,不懂看看<操作系统>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小5网络工作室
2014-11-21 · TA获得超过137个赞
知道答主
回答量:204
采纳率:0%
帮助的人:102万
展开全部
不会出现同时达到,这种情况不会发生。除非天塌了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式