消息软删除

本文介绍了一种消息软删除的方法,通过设置isdel字段的不同值来记录消息被发送方或接收方删除的状态。当发送方或接收方删除消息时,通过异或操作更新isdel字段,以区分不同情况。


      前段时间做个小东西,涉及到消息的软删除。比如A和B之间发的消息存到一张表中,A可以删除自己收件箱中的这条消息,但是这条消息还存在B的收件箱中,直到B也删除这条消息。比如张三和李四用手机发短信,张三清空自己的收件箱之后,不影响李四的收件箱。
其实,做软删除,只不过是设置一个标志位而已,比如,0表示未删除,1表示删除。而我的需求是实现到底谁删除了。
数据库设计如下:

id   消息id
uid_from   发送方id
uid_to     接收方id
message   消息内容
sendtime    发送时间
isdel     是否删除,默认值为0

实现方法为:

      如果是发送方删除消息,则用1|isdel(注:| 表示异或),如果接收方删除消息,则用2|isdel,
原始isdel为0,

如果只有发送方删除消息,则isdel变为1,

如果只有接收方删除消息,则isdel变为2,

如果发送方和接受方都删除了,则isdel变为3。

sql语句如下:

1 update user_letter set isdel = isdel | (if(uid_from = $userid),1,2))
2 where $id = id and $userid = uid_from or $userid = uid_to

$id表示消息id,$userid 表示用户id,通过if语句判断,用户id是该消息的发送方还是接收方,即if(uid_from = $userid),1,2),if语句通过PHP传到mysql是可以运行的,已测试过。

 

小弟水平有限,欢迎各位吐槽。

 

转载于:https://www.cnblogs.com/cxybjfu/archive/2013/06/07/3125454.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值