0

MYSQL DB で以前に更新された値を知りたいです。

si.no   cus_name     date      status
  1      JOHN     2012-05-02   active 

  1      PAUL     2012-05-02   active ( not a new record just an 1st-update )

  1      JOSE     2012-05-02   active  ( not a new record just an 2nd-update )

今、同じ"JOHN"名前を更新するときに cus_name の値を取得したいと思います。"PAUL""JOSE""PAUL"

同じ質問をしてください。

お時間をいただきありがとうございます。

4

3 に答える 3

1

db にもう 1 つの列を追加し、time(); を使用して現在の時刻を挿入する必要があります。関数。そのため、どちらが古いかを簡単に識別できます。別の解決策は、データベースの日付の構造をからに変更して、date簡単DATETIMEに確認できるようにすることです..

CREATE TABLE IF NOT EXISTS `customer_record` (
`si.no` int(11) NOT NULL,
`cus_name` varchar(255) NOT NULL,
`date` DATETIME NOT NULL,
`status` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
于 2012-09-28T05:11:49.320 に答える
1

以前の値にアクセスしたい場合は、2 つのオプションがあります。

  1. 最新バージョンと行の以前のバージョンを常にフェッチできるように、バージョン番号とタイムスタンプ列を使用してテーブルを設計します。おそらくアプリケーションコードまたはトリガーを使用して、更新操作を挿入に変更する必要があります。テーブルが頻繁に更新されると、テーブルが非常に大きくなる可能性があります。
  2. 2 番目のテーブルを使用して、更新された行の以前のバージョンを格納します。そのテーブルにはバージョン番号 (および場合によっては更新タイムスタンプ) が必要です。このアプローチには、「現在の」データを含むプライマリ テーブルが、更新が蓄積されても際限なく大きくならないという利点があります。これは、トリガーまたはアプリケーションで行うこともできます。

どちらを選択するかは、更新の頻度と「古い」レコードへのアクセスの頻度によって異なります。

于 2012-09-28T05:04:15.380 に答える
0

簡単な方法として、auto_increment フィールドをテーブルに追加します。最後の値を取得するには、単純に選択し、auto_increment フィールドで降順制限 1 で並べ替えます。

于 2012-09-28T05:22:03.660 に答える