对于 MySQL 中表中的 TIMESTAMP
和 DATETIME
列,您可以:
-
将当前时间戳指定为默认值
-
分配auto-update值
-
分配以上两项
注意
Auto-update 表示当该行中任何其他列的值发生更改时,auto-update 列的值会自动更新为当前时间戳。
默认值
要将 TIMESTAMP
和 DATETIME
列的默认值设置为当前时间戳:
CREATE TABLE table_name (
column1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
column2 DATETIME DEFAULT CURRENT_TIMESTAMP
);
请注意,默认值不必是 CURRENT_TIMESTAMP
,您也可以使用固定值:
CREATE TABLE table_name (
column1 TIMESTAMP DEFAULT '2020-01-01 00:00:00',
column2 DATETIME DEFAULT '2020-01-01 00:00:00'
);
Auto-update值
要将 TIMESTAMP
和 DATETIME
列设置为 auto-update:
CREATE TABLE table_name (
column1 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- default 0
column2 DATETIME ON UPDATE CURRENT_TIMESTAMP -- default NULL
);
注意
如果我们不提供DEFAULT
子句,TIMESTAMP
默认为0
,而DATETIME
默认为NULL
您可以通过指定 NULL
或 NOT NULL
属性来修改此行为:
CREATE TABLE table_name (
column1 TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP, -- default NULL
column2 DATETIME NOT NULL ON UPDATE CURRENT_TIMESTAMP -- default 0
);
现在 column1
将具有默认值 NULL
而 column2
将具有默认值 0
。
默认值和Auto-update
要将 TIMESTAMP
和 DATETIME
数据类型列设置为具有默认值和 auto-update:
CREATE TABLE table_name (
column1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
column2 DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
现在column1
和column2
都有一个默认值(当前时间戳),而当对表中的任何其他列进行更改时它们也将是auto-updated(带有更改时的时间戳)。
相关用法
- MySQL ATAN2方法用法及代码示例
- MySQL AS用法及代码示例
- MySQL ABS()用法及代码示例
- MySQL ATAN2()用法及代码示例
- MySQL ACOS()用法及代码示例
- MySQL ABS方法用法及代码示例
- MySQL AVG()用法及代码示例
- MySQL ASIN方法用法及代码示例
- MySQL ATAN方法用法及代码示例
- MySQL AND用法及代码示例
- MySQL AES_DECRYPT()用法及代码示例
- MySQL ADDTIME方法用法及代码示例
- MySQL ADDDATE方法用法及代码示例
- MySQL AVG方法用法及代码示例
- MySQL ATAN()用法及代码示例
- MySQL ASIN()、ACOS()用法及代码示例
- MySQL ASCII方法用法及代码示例
- MySQL ASIN()用法及代码示例
- MySQL ADDTIME()用法及代码示例
- MySQL ADDDATE()用法及代码示例
- MySQL ASCII()用法及代码示例
- MySQL ACOS方法用法及代码示例
- MySQL AES_ENCRYPT()用法及代码示例
- MySQL ROUND()用法及代码示例
- MySQL REPEAT()用法及代码示例
注:本文由纯净天空筛选整理自Arthur Yanagisawa大神的英文原创作品 MySQL | Automatic Initialization and updating for TIMESTAMP and DATETIME。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。