MySQLでは、データベースにあるすべてのテーブルに_dt_created
_および_dt_modified
_(それぞれ作成および最終変更の日時スタンプ)列を追加するのはうんざりです。
データベースをINSERT
またはUPDATE
するたびに、NOW()
キーワードを使用する必要があります。これは私の粘り強さ全体に及んでいます。
MySQLが少なくとも挿入された行のデータ時間を自動的に保存し、それを取得できる効率的な代替手段はありますか?
DEFAULT制約を使用して、タイムスタンプを設定できます。
_ALTER TABLE
MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP
ALTER TABLE
MODIFY dt_modified datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
_
INSERT/UPDATEステートメントでNOW()
を指定する必要はありません。
参照: TIMESTAMPプロパティ
phpmyadminを使用している場合、これを行うには:
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
正しいコードである必要があります。
まあ、あなたは両方を持つことはできません:
現在のタイムスタンプを1つの列のデフォルト値にし、別の列の自動更新値にすることはできません。
悲しいですね。
ただし、now()の代わりにnullを使用できます このヒントに従って
同様の質問がここで尋ねられました " Timestamp for MySQL "タイムスタンプフィールドはアクセスされるたびに更新されます。また、問題のテーブルに Trigger を配置して、これらのフィールドを自動的に設定することを検討することもできます。環境によっては、一部のショップ/ビジネスはトリガーの使用を好まないため、代替の回避策を見つける必要がある場合があります。
Phpmyadminで設定できます
または、このクエリを使用します
ALTER TABLE `tablename`
CHANGE `dt_created` `dt_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP