手动阀

Good Luck To You!

MYSQL中怎样设列的默认值为Now的介绍

在MySQL中,设置列的默认值为当前日期和时间是一个常见的需求,尤其是在需要记录数据插入或更新时间的场景中,MySQL并不直接支持将函数(如NOW())设置为列的默认值,但可以通过使用TIMESTAMP列类型来实现类似的功能。

MYSQL中怎样设列的默认值为Now的介绍

使用TIMESTAMP列类型实现默认值为当前时间

1、TIMESTAMP列的特性

TIMESTAMP列可以自动记录行的插入或更新时间。

它支持多种显示格式,从2位到14位不等,但存储时总是使用完整的14位精度。

当插入新行时,如果未指定TIMESTAMP列的值,它会自动设置为当前的日期和时间。

2、创建包含TIMESTAMP列的表

   CREATE TABLE test (
       id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
       datetime_col TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
   );

在这个例子中,datetime_col将在插入新行时自动设置为当前时间,并在每次更新该行时刷新为新的当前时间。

3、插入数据并验证

MYSQL中怎样设列的默认值为Now的介绍

   INSERT INTO test (id) VALUES (1);
   SELECT * FROM test;

这将显示datetime_col列为插入时的当前时间。

4、更新数据并验证

   UPDATE test SET id = 2 WHERE id = 1;
   SELECT * FROM test;

这将显示datetime_col列为更新时的当前时间。

注意事项

如果表中有多个TIMESTAMP列,只有第一个TIMESTAMP列会自动更新,其他TIMESTAMP列需要显式设置为NULL或NOW()才能更新为当前时间。

TIMESTAMP列的显示格式可能与存储格式不同,一个定义为TIMESTAMP(8)的列实际上存储了14位的数据,但在查询时只显示8位。

不合法的TIMESTAMP值将被转换为适当类型的“零”值(如00000000000000)。

虽然MySQL不支持直接将函数设置为列的默认值,但通过使用TIMESTAMP列类型并结合默认值和更新特性,可以实现类似的功能,这对于需要记录数据操作时间的应用场景非常有用。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.