我有一张桌子
____________________________________________________________
| Message |
|___________________________________________________________|
| Sender | Message | Receiver | message_id |
| John | How Are You?| Will | 1 |
|_________|_____________|___________________|_______________|
In 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?
现在我怎样才能克服这个无法获得所需输出的错误
答案 0 :(得分:1)
其他答案的替代方案(两者都可以肯定有效)将是一个单独的“收件箱”表。只是链接了哪些邮件仍然在其收件箱中的内容,例如:
__________________________
| INBOX |
|________________________|
| User | Message_id |
| John | 1 |
| Will | 1 |
|_________|______________|
然后当John删除邮件时,您从收件箱表中删除该行:
__________________________
| INBOX |
|________________________|
| User | Message_id |
| Will | 1 |
|_________|______________|
这种方式也很好,因为它将构成消息的元数据与有关存储位置的信息,人们采取的行动等分开。
答案 1 :(得分:1)
只需维护另外两列boolean is_deleted(true/false) and deleted_by(S/R)
以保持邮件状态被删除( true或false )和deleted_by(发件人或接收者)。
答案 2 :(得分:0)
添加单独的布尔值Read By Sender和Read By Reciever列并更新那些而不是实际的发送者/接收者
答案 3 :(得分:0)
只需添加两个(枚举)列来指示谁已删除该消息。
然后,为了显示消息,请在WHERE
子句中确保相应的值尚未设置。
在任何情况下都会保留Sender
和Receiver
列,以便您可以输出所有邮件信息并将邮件附加到正确的用户。