74

次のような 2 つの TIMESTAMP フィールドを持つテーブルを定義したいと思います。

CREATE TABLE `msgs` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `msg` VARCHAR(256),
    `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

エラーを回避する方法:

ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

ポイントは、テーブル スキーマでts_createとの望ましい動作を維持することです。ts_update

4

8 に答える 8

20

これは古い投稿だと思いますが、実際には、mysql は最近のエディションで 2 つの TIMESTAMP をサポートしていると思います。mysql 5.6.25 は、現在使用しているものです。

于 2016-02-16T07:59:45.217 に答える
5

古いバージョンの MySql を使用しています。myqsl を 5.6.5+ に更新すると動作します。

于 2015-04-28T15:51:28.847 に答える
1

テーブルに CURRENT_TIMESTAMP の同じデフォルト値を持つ 2 つの TIMESTAMP 列を持つことはできません。このリンクを参照してください: http://www.mysqltutorial.org/mysql-timestamp.aspx

于 2014-09-30T00:44:45.970 に答える
0

ts_createを日時として(名前を変更-> dt_create)、ts_updateのみをタイムスタンプとして使用したいと思いますか?これにより、一度設定すると変更されないままになります。

私の理解では、日時は手動で制御される値用であり、タイムスタンプはMySQLがそれを維持するという点で少し「特別」です。したがって、この場合、日時はts_createに適しています。

于 2011-02-04T10:40:27.757 に答える
0

ts_updateにDEFAULTCURRENT_TIMESTAMPを設定する必要はないと思います。空の場合は更新されないため、「最後の更新」はts_createです。

于 2011-02-04T10:45:21.180 に答える