HoRain云--MySQL自动记录创建和更新时间技巧

在MySQL中,你可以通过以下步骤设置字段自动记录数据的创建时间和更新时间:

1. ​​创建新表时定义自动时间字段​

适用于MySQL 5.6.5及以上版本,支持多个TIMESTAMP字段的自动初始化和更新。

CREATE TABLE example (
    id INT PRIMARY KEY,
    data VARCHAR(255),
    -- 创建时间:插入时自动填充,不更新
    create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    -- 更新时间:插入和更新时均自动填充
    update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

2. ​​修改现有表以添加自动时间字段​

添加新字段并设置属性
-- 添加创建时间字段
ALTER TABLE your_table
ADD COLUMN create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

-- 添加更新时间字段
ALTER TABLE your_table
ADD COLUMN update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
修改现有字段属性
-- 修改为自动记录创建时间
ALTER TABLE your_table
MODIFY COLUMN create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

-- 修改为自动记录更新时间
ALTER TABLE your_table
MODIFY COLUMN update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

3. ​​注意事项​

  • ​版本兼容性​​:确保MySQL版本≥5.6.5,否则可能仅允许一个TIMESTAMP字段自动更新。
  • ​字段类型​​:
    • ​TIMESTAMP​​:占用4字节,范围1970-01-01 00:00:012038-01-19 03:14:07,带时区转换。
    • ​DATETIME​​:占用8字节,范围1000-01-01 00:00:009999-12-31 23:59:59,不支持时区。
    • 从MySQL 5.6.5开始,两者均可使用DEFAULTON UPDATE
  • ​数据处理​​:修改现有表时,新字段的默认值会填充到已有记录中(值为执行ALTER时的时间)。若需保留原始时间,需手动更新数据。

4. ​​验证自动更新​

  • ​插入测试​​:

    INSERT INTO example (id, data) VALUES (1, 'test');
    -- create_time和update_time均自动填充为当前时间
  • ​更新测试​​:

    UPDATE example SET data = 'updated' WHERE id = 1;
    -- 仅update_time自动更新为当前时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值