2016-05-31 5 views
0

私は2つのタイムスタンプフィールドを持つテーブルを持っています。彼らはnullableではありません。問題は、それらのフィールドにnullを挿入するたびに、現在の日付が自動的に保存され、別の非nullフィールドに値を挿入したときと同じように、 "First_data_dt 'カラムを' nullにすることはできません。MySQLは、値がnullのときにフィールドを現在の日付に設定します。

この表に関連付けられているトリガーはありません。

これはなぜ起こっているのですか? first_data_dt私はnullを挿入する現在のタイムスタンプいつに更新されて、なぜ私は今理解

CREATE TABLE `ui_mytable` (

    `id` int(11) NOT NULL, 

    `first_data_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 

    `last_data_dt` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' 

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

EDITは、テーブル定義を追加します。しかし、last_data_dtはどうですか?

+2

フィールドにはデフォルト値がありますか? – jbe

+2

シェアテーブル定義 –

+1

デフォルト値を設定currentTimeStamp –

答えて

2

TIMESTAMP列が何をするかです:

TIMESTAMPデータ型は現在の日付と時刻に自動初期化とアップデートを提供しています(つまり、現在のタイムスタンプです)。 [...] NULL値を許可するためにNULL属性で定義されていない限り、TIMESTAMP列を現在の日付と時刻に初期化または更新するには、NULL値を割り当てます。

出典:MySQL documentation

はたぶんあなたの代わりにDATETIMEを使用したいですか?

+0

ありがとう!私はすでに素早く見ていましたが、私は十分注意を払っていなかったと思います。(この文章では、次のように書いています: "さらに、TIMESTAMPカラムをNULLに設定して、 NULL値を許可するためにNULL属性で定義されている場合を除きます。 " もう一度ありがとう! – Neets

関連する問題