MySQL 自动设置创建时间和更新时间

MySQL 自动设置创建时间和更新时间,表结构需要如何定义,MySQL版本最低为多少
在MySQL中自动设置创建时间和更新时间,可以通过以下方式实现:

表结构定义
对于MySQL 5.6.5及以上版本,可以使用以下表结构定义:

CREATE TABLE your_table_name (
    id INT AUTO_INCREMENT PRIMARY KEY,
    data VARCHAR(255),
    create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
);

create_time字段会在插入新记录时自动设置为当前时间戳。

update_time字段会在更新记录时自动更新为当前时间戳。

对于MySQL 5.6.5以下版本,由于存在限制(每个表只能有一个TIMESTAMP字段同时启用DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP),通常需要使用触发器来实现。

MySQL版本要求

• MySQL 5.6.5及以上版本:支持在多个TIMESTAMP字段上同时使用DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP

• MySQL 5.6.5以下版本:每个表只能有一个TIMESTAMP字段同时启用DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP

修改现有表
如果需要为已有的表添加自动设置时间的功能,可以使用以下SQL语句:

ALTER TABLE your_table_name
ADD COLUMN create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
ADD COLUMN update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';

通过以上方式,可以在MySQL中实现创建时间和更新时间的自动设置。

JPA 实体对象应如何设置

@Column(name = "create_time", insertable = false, updatable = false)
@Column(name = "update_time", insertable = false, updatable = false)

创建时间 @Column注解 设置 insertable = false 和 updatable = false
含义:JPA 自动生成insert/update的sql时忽略该字段

更新时间 @Column注解 设置 insertable = false 和 updatable = false
含义:JPA 自动生成update/update的sql 时忽略该字段

posted @ 2025-03-11 20:16  crazy-zz5536  阅读(260)  评论(0)    收藏  举报