MySQL8如何设置自动创建时间和自动更新时间

    业务场景:

    1、在数据库表中的数据,要求记录每一条新增数据的创建时间,时间格式要求明确至:年月日:时分秒。

    2、在数据库表中的数据,要求记录每一条更新数据的更新时间,时间格式要求明确至:年月日:时分秒。

    功能实现:

    1、为每张业务表添加create_time 和update_time 字段,且将字段类型设置为:timestamp

    如何在MySQL8中设置自动创建时间和自动更新时间

    2、为每张业务表的create_time 和update_time 字段,设置默认值:CURRENT_TIMESTAMP

    DDL 脚本语法:1、新增字段create_time语法

    ALTER TABLE 表名

    ADD COLUMN 字段名 timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '
    创建时间'
    ;

    实例:为User表 新增create_time设置默认时间 CURRENT_TIMESTAMP

    ALTER TABLE User
    ADD COLUMN create_time datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '
    创建时间'
    ;
    2、修改字段create_time语法ALTER TABLE 表名
    MODIFY COLUMN 字段名 timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '
    创建时间'
    ;

    实例:修改User 表中的create_time设置默认时间 CURRENT_TIMESTAMP

    ALTER TABLE User
    MODIFY COLUMN create_time timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '
    创建时间'
    ;
    3、新增字段update_time 语法ALTER TABLE 表名
    ADD COLUMN 字段名 timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '
    更新时间'
    ;

    实例:为User表 新增update_time 设置默认时间 CURRENT_TIMESTAMP

    ALTER TABLE User
    ADD COLUMN Update_time timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '
    更新时间'
    ;
    4、修改字段update_time 语法ALTER TABLE 表名
    MODIFY COLUMN 字段名 timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '
    更新时间'
    ;

    实例:修改User 表中的update_time设置默认时间 CURRENT_TIMESTAMP

    ALTER TABLE User
    MODIFY COLUMN update_time timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '
    更新时间'
    ;


    自动创建时间和自动更新时间是非常有用和方便的功能,可以帮助我们更好地管理数据库中的数据。在MySQL 8中,我们可以很容易地设置这些功能。接下来,我们将介绍如何设置自动创建时间和自动更新时间。
    设置自动创建时间
    自动创建时间是指当我们在数据库中插入一条新记录时,系统会自动生成一个时间戳,记录该数据的创建时间。在MySQL 8中,我们可以使用TIMESTAMP类型来实现自动创建时间的功能。具体步骤如下:
    1. 在表的创建语句中,为需要自动生成创建时间的字段添加一个默认值为CURRENT_TIMESTAMP的约束。如下所示:
    CREATE TABLE test (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    2. 当我们插入新记录时,不需要手动为created_at字段赋值,系统会自动生成时间戳。如下所示:
    INSERT INTO test (name) VALUES ('John');
    3. 在查询数据时,我们可以看到创建时间已经被自动记录下来了。如下所示:
    SELECT * FROM test;
    +----+------+---------------------+
    | id | name | created_at |
    +----+------+---------------------+
    | 1 | John | 2022-01-01 00:00:01 |
    +----+------+---------------------+
    设置自动更新时间
    自动更新时间是指当我们在数据库中修改一条记录时,系统会自动更新该数据的更新时间戳。在MySQL 8中,我们可以使用ON UPDATE CURRENT_TIMESTAMP约束来实现自动更新时间的功能。具体步骤如下:
    1. 在表的创建语句中,为需要自动生成更新时间的字段添加一个默认值为CURRENT_TIMESTAMP、ON UPDATE CURRENT_TIMESTAMP的约束。如下所示:
    CREATE TABLE test (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    );
    2. 当我们更新记录时,不需要手动为updated_at字段赋值,系统会自动更新时间戳。如下所示:
    UPDATE test SET name = 'Marry' WHERE id = 1;
    3. 在查询数据时,我们可以看到更新时间已经被自动记录下来了。如下所示:
    SELECT * FROM test;
    +----+-------+---------------------+---------------------+
    | id | name | created_at | updated_at |
    +----+-------+---------------------+---------------------+
    | 1 | Marry | 2022-01-01 00:00:01 | 2022-01-02 00:00:01 |
    +----+-------+---------------------+---------------------+
    总结
    通过上述步骤,我们可以在MySQL 8中轻松实现自动创建时间和自动更新时间的功能。使用这些功能,我们可以更好地管理数据库中的数据,提高数据管理的效率和质量,是非常实用和方便的功能。