1

私はテーブルを持っています

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

ウィルコンピュータで私は次のように示しています

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

boolean is_deleted(true/false) and deleted_by(S/R)メッセージステータスdeleted(trueまたはfalse)とdeleted_by(SenderまたはReceiver )を維持するには、さらに2つの列を維持するだけです。

于 2012-06-12T13:45:01.777 に答える
1

他の回答(どちらも間違いなく機能する可能性があります)の代わりに、別の「受信トレイ」テーブルを用意することもできます。次のように、どのメッセージがまだその受信トレイにあるかをリンクしたもの。

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

次に、ジョンがメッセージを削除すると、その行が受信ボックステーブルから削除されます。

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

この方法は、メッセージを構成するメタデータを、メッセージが保存されている場所、ユーザーが実行したアクションなどに関する情報から分離するためにも便利です。

于 2012-06-12T13:42:33.580 に答える
0

個別のブール値のReadBySender列とReadByReciever列を追加し、実際の送信者/受信者ではなくそれらを更新します

于 2012-06-12T13:34:21.120 に答える
0

すでにメッセージを削除した人を示すために、さらに2つの(列挙)列を含めるだけです。

次に、メッセージを表示するためにWHERE、それぞれの値がまだ設定されていないことを句で確認してください。

いずれの場合も、SenderおよびReceiver列を保持して、すべてのメッセージ情報を出力し、メッセージを正しいユーザーに添付できるようにします。

于 2012-06-12T13:34:45.613 に答える