0

私はSQLの分野で静かに新しいです。したがって、私には質問をする方法があります。

毎週、MySQLDB上のExcelスプレッドシートからpHpコードを介してデータを送信します。これはすでに機能しています。したがって、更新できるテーブルがあります。

実際、DBの基礎となる特定の価格を送信しています。次のように私のデータをアーカイブするための最良の方法は何ですか。

私のDBには、次の構造があります。

tabe t_index
Label = VARCHAR(255)
Price = float
Date = date()

先週データベースにデータを送信したとしましょう。したがって、次のように保存しました。

Stock A
102.85
2013-03-18

Stock A今日は、同じものの新しい価格を送信したいのですが、2つの価格の間で何らかの利益を得ることができるように103.54、価格をアーカイブして保持したいと思います。102.85

どうすればいいですか?

私の質問があまり乱雑ではないことを願っています...あなたの助けをありがとう

4

2 に答える 2

5

これを行う1つの方法は、古い値を別のテーブルに挿入するUPDATEトリガーを作成することです。したがって、既存のエントリを更新すると、古いデータが別のテーブルにコピー/アーカイブされます。

CREATE TABLE t_index_archive (
Label VARCHAR(255),
Price float,
Date datetime);

次に、既存のテーブルにトリガーを作成します

DROP TRIGGER IF EXISTS archive_t_index;
DELIMITER $$
CREATE DEFINER = CURRENT_USER TRIGGER archive_t_index BEFORE UPDATE ON t_index
     FOR EACH ROW BEGIN 
          INSERT INTO t_index_archive VALUES (OLD.Label, OLD.Price, OLD.Date);
     END;
$$
DELIMITER ;
于 2013-03-25T11:16:49.540 に答える
0

is_active値を持つENUMタイプのような名前の別の列を追加できますactive,inactive

デフォルトでis_activeは、の値は'active'

データベースに新しいエントリを入力するときは、古いエントリis_activeをで更新して'inactive'から、新しいエントリを追加するだけです。

where句を使用したクエリを使用して新しいデータを取得するWHERE is_active='active'

于 2013-03-25T11:21:26.123 に答える