MySQL timestamp自動生成時間、自動更新時間.実戦
2327 ワード
CREATE TABLE `test`
( `CreateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ModiTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
あまり話さないで先に配置します.この構成はtimestampタイプでなければなりません.datatimeは使用できません.datatimeを使用すると「値が空ではありません」とエラーが表示されるためです.
NOT NULL DEFAULT CURRENT_TIMESTAMP:値が空ではありません.デフォルト値は現在の時間です.
NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP:値が空ではありません.デフォルト値は現在の時間で、データが更新された場合、値は現在の時間に更新されます.
ここで2つの構成の使い方は、私の上の1つが作成時間として使用でき、1つは変更時間として使用できます.ここで強調したいのは、更新時にModiTimeフィールドに値がある場合は更新されず、更新時にはModiTime=nullを維持することです.
ここでスレ主は言って、スレ主プロジェクトはjpaを使って、だからここでもし使うならば
DEFAULT CURRENT_TIMESTAMP
jpa、jpa、jpa、jpaはnull値を注入してくれるので、予想通りの効果は得られません.だから使う必要がある
NOT NULL
手を上げて.ここで質問があるかもしれませんが、NOT NULLを使って挿入したときは空いていたのではないでしょうか.実はそうではありません.運行の順序を見てみましょう.