1

我有一张桌子

____________________________________________________________
|                         Message                           |
|___________________________________________________________|
| Sender  |  Message    |    Receiver       |   message_id  |   
| John    | How Are You?|      Will         |       1       |
|_________|_____________|___________________|_______________|

在 Will 计算机中,我显示如下

Message By:John
Message:How Are You?

现在假设 John 删除了这条消息但我无法删除记录,因为 Will 尚未删除。因此我正在运行更新查询

Update Message Set Sender='' where message_id=1;

但是在这样做之后,计算机消息将更改如下

 Message By:                    //Because i have changed sender to null
    Message:How Are You?

现在我该如何克服这个没有得到想要的输出的错误

4

4 回答 4

1

其他答案的替代方案(两者肯定都可以)是有一个单独的“收件箱”表。只是将哪些邮件仍然在谁的收件箱中联系起来的东西,例如:

__________________________
|        INBOX           |
|________________________|
| User    |  Message_id  |  
| John    |       1      | 
| Will    |       1      | 
|_________|______________|

然后,当 John 删除邮件时,您会从收件箱表中删除该行:

__________________________
|        INBOX           |
|________________________|
| User    |  Message_id  |  
| Will    |      1       | 
|_________|______________|

这种方式也很好,因为它将构成消息的元数据与有关其存储位置、人们采取的行动等信息分开。

于 2012-06-12T13:42:33.580 回答
1

只需再维护两列boolean is_deleted(true/false) and deleted_by(S/R)来维护消息状态已删除(true 或 false)和 deleted_by (Sender 或 Receiver)。

于 2012-06-12T13:45:01.777 回答
0

只需包含另外两个(枚举)列来指示,谁已经删除了该消息。

然后为了显示消息,请确保在您的WHERE子句中尚未设置相应的值。

无论如何保留SenderReceiver列,以便您可以输出所有消息信息并将消息附加给正确的用户。

于 2012-06-12T13:34:45.613 回答
0

添加单独的布尔 ReadBySender 和 ReadByReciever 列并更新这些而不是实际的发送者/接收者

于 2012-06-12T13:34:21.120 回答