MySQL timestamp只能有一列被设为CURRENT_TIMESTAMP

    创建数据库表时,遇到问题:

错误代码: 1293
Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    在MySQL 5.6.5版本之前,是只能有一列能够在初始化的时候或者被更新的时候自动设置为CURRENT_TIMESTAMP的值。这个限制在后续版本中取消了,后续版本的MySQL支持任意列被设置为DEFAULT CURRENT_TIMESTAMP以及 ON UPDATE CURRENT_TIMESTAMP时自动更新值

    MySQL的release Note中也有说明。https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html

### 修改 MySQL 中 DDL 语句中的 Timestamp 字段MySQL 数据库中,可以通过定义 `DEFAULT CURRENT_TIMESTAMP` 来设置 `TIMESTAMP` 类型字段的默认值为当前时间戳。这使得每次插入新记录而未指定该字段时,自动填充当前系统时间。 对于已存在的表结构,可以使用 `ALTER TABLE` 语句来修改现有的 `TIMESTAMP` 列并为其设定默认值: ```sql ALTER TABLE table_name MODIFY column_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP; ``` 如果是在创建新表的时候,则可以在建表语句中直接声明此属性: ```sql CREATE TABLE new_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 当涉及到更新操作时,还可以进一步配置 `ON UPDATE CURRENT_TIMESTAMP` 属性以便于每当记录被更改时自动更新这个时间戳字段[^1]。 #### 示例代码 假设有一个名为 `users` 的表,其中包含一个叫做 `created_on` 的 `TIMESTAMP` 字段,现在希望将其默认值设为当前时间戳: ```sql -- 修改现有表以添加默认时间为CURRENT_TIMESTAMP ALTER TABLE users MODIFY created_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP; -- 创建带有默认时间戳的新表 CREATE TABLE orders ( order_id INT NOT NULL, product_name VARCHAR(200), quantity INT, ordered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 默认值为当前时间戳 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- 插入更新时都设置为当前时间 ); ``` 通过上述方法能够有效地管理数据库内的时间信息,并确保所有存储的时间都是基于 UTC 时间标准处理过的,从而避免因不同地区服务器之间存在差异而导致的数据一致性问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值