
テーブルを作成すると
CREATE TABLE t1 (
id BIGINT UNSIGNED NOT NULL,
createDate TIMESTAMP(3) NOT NULL,
updateDate TIMESTAMP(3) NULL DEFAULT NULL,
closeDate TIMESTAMP(3) NULL DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
createDate
列は次のように作成されます
`createDate` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
1) この背後にあるロジックは何ですか? MySQL がデフォルト値を追加するのはなぜですか? また、なぜ追加されるのですかON UPDATE CURRENT_TIMESTAMP(3)
?
timestamp(3) NOT NULL
2)デフォルト値のない列を作成することは可能ですか?
編集1:
id
たとえば、列にはデフォルト値がないような気がします。
insert t1 updateDate values (now());
私は
ERROR 1364 (HY000): Field 'id' doesn't have a default value
そのため、INT 型の列にはデフォルト値が自動的に追加されません。
答え1
まず、すべての列にはデフォルト値があります。多くの場合、このデフォルト値は ですNULL
が、宣言されている場合はNOT NULL
明らかに別の値にする必要があります。
データ型の場合TIMESTAMP
、デフォルト値は ですCURRENT_TIMESTAMP()
が、もちろんこれを上書きすることもできます。
createDate TIMESTAMP(3) NOT NULL DEFAULT '0000-01-01 00:00:00'
例えば、デフォルト値を0.0 ADに設定する