質問

同じ行のフィールドが変更されるたびに自動的に更新されるMySQLテーブルにタイムスタンプ列を定義することは可能ですか?理想的には、この列は最初に行が挿入された時間に設定する必要があります。

乾杯、 ドン

他のヒント

タイムスタンプ列は、前述の他のポスターとして使用できます。以下は、列を追加するために使用できるSQLです。

ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

これにより、「lastUpdated」という列に現在の日付/時刻のデフォルト値が追加されます。そのレコードが更新されると(5分後など)、そのタイムスタンプは現在の時刻に自動的に更新されます。

これは私が観察したことです(MySql 5.7.11)-

テーブルの最初のTIMESTAMP列は、現在のタイムスタンプをデフォルト値として取得します。したがって、値を指定せずにINSERTまたはUPDATEを実行すると、列は現在のタイムスタンプを取得します。

後続のTIMESTAMP列には、デフォルト値が明示的に定義されている必要があります。 2つのTIMESTAMP列があり、2番目の列にデフォルト値を指定しない場合、テーブルの作成中にこのエラーが発生します-

エラー1067(42000): 'COLUMN_NAME'のデフォルト値が無効です

MySQLタイムスタンプは、デフォルト値が設定されている場合にのみ、作成時間または更新時間で設定されます。 ALTER TABLE some_table ADD when TIMESTAMP DEFAULT CURRENT_TIMESTAMP
それ以外は、DateTimeフィールドのように機能しますが、それは1970/01/01 UTCに対して相対的であるため、DateTimeのように特定のタイムゾーンに依存しない絶対的な時点です。

IIRC、タイプタイムスタンプのテーブルの最初の列は、レコードの作成時に設定され、変更できません。タイプタイムスタンプの2列目は、レコードが更新されるたびに設定されます。またはその逆。

MySQLの作業をあまり行っていないので、これを確認する必要があります。

scroll top