2017-02-28 5 views
0

タイムスタンプを持つInnoDBテーブルがあり、タイムスタンプの日付部分だけを持つ別のフィールドを持っていて、そこにインデックスを作成することができます。 (私の一時的なクエリは常に日付でバインドされるため、タイムスタンプ上のカーディナリティの高いインデックスは実際には必要ありません)。Mysql 5.5のタイムスタンプフィールドから日付フィールドを自動的に更新する方法は?

タイムスタンプフィールドから日付フィールドの更新を自動的にON UPDATEにすることは可能ですか? CURRENT_TIMESTAMP作品)?

私は以下を試しましたが、MySQLではSQL構文にエラーがあると言います。

CREATE TABLE test_table (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `full_ts` timestamp NULL DEFAULT NULL COMMENT 'The full timestamp', 
    `only_date` date NULL DEFAULT NULL ON UPDATE date(full_ts) COMMENT 'This field carries only the date part of the full timestamp for better indexing.', 
    PRIMARY KEY (`id`), 
    KEY `ONLY_DATE_IDX` (`only_date`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

私はもちろん、コードの至る所に両方のフィールドを更新することができますが、only_dateフィールドは、更新されfull_tsフィールドの奴隷だったし、データベースで一貫性が保た場合、それはきれいになります。

私は、MySQL 5.7.5には、ストアド生成されたカラムに対して新しい機能が追加されていることがわかりました。残念ながら、現時点ではデータベースのバージョンをアップグレードすることはできません。

これを達成する方法はMySQL 5.5でですか?あなたは "full_ts" を更新するとき

+0

それを管理するトリガーを作成します。 – jarlh

+0

私はあなたがそれを簡単に行うことはできないと思います。トリガを実行させた同じテーブルを変更することはできません。 – jbx

+0

何?それがトリガーを使用するものです。 – jarlh

答えて

関連する問題