MySQL 时间戳字段 - 创建/修改

标签 mysql

我最近决定停止对表中的createdmodified 日期字段使用 MySQL 触发器,因为在客户端部署时运行安装文件中包含的脚本会很复杂.

我以这种方式更改了字段:(示例)

alter table users 
modify `created` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'

alter table users 
modify `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
        ON UPDATE CURRENT_TIMESTAMP 

当我现在运行我的程序并填写表单以添加数据时(表单控件是数据绑定(bind)的),我收到消息“‘创建的’列不允许空值”。

在已经存在的数据上,当我尝试更新时,修改日期根本没有改变。

我看过很多文章,比如Having both a Created and Last Updated timestamp columns in MySQL 4.0但找不到解决方案。

我该如何解决?

我正在使用 MySQL v 5.6.15.0

最佳答案

ALTER TABLE 'my_table'
CHANGE `created` TIMESTAMP DEFAULT 0,
CHANGE `modified` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

但请务必在创建和更新操作期间为 created 和 modified 赋予任何值。

这是一个例子:

mysql> CREATE TABLE ts_test5 (
-> created TIMESTAMP DEFAULT 0,
-> updated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-> data CHAR(30)
-> );
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO ts_test5 (created, data)
-> VALUES (NULL, ‘original_value’);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM ts_test5;
+---------------------+---------------------+----------------+
| created             |updated              |data            |   
+---------------------+---------------------+----------------+
| 2005-01-04 14:47:39 | 0000-00-00 00:00:00 | original_value |
+---------------------+---------------------+----------------+
1 row in set (0.00 sec)

mysql> . . . time passes . . .

mysql> UPDATE ts_test5 SET data=’updated_value’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1
Changed: 1
Warnings: 0

mysql> SELECT * FROM ts_test5;
+---------------------+---------------------+---------------+
| created             |updated              |data           |
+---------------------+---------------------+---------------+
| 2005-01-04 14:47:39 | 2005-01-04 14:47:52 | updated_value |
+---------------------+---------------------+---------------+
1 row in set (0.00 sec)

关于MySQL 时间戳字段 - 创建/修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22170758/

相关文章:

php - mysql 查询加入group_concat

PHP 不会 POST 到 MySQL 数据库。

php - 数据库没有收到正确的数据

python - Django 主键充当外键

php - 如何检查内容是否已经在数据库中,如果没有则输入它?

php - 如何查找与数组中的一个匹配的字符串

PHP Echo Mysql 数据来自 2 个表 BY 最新数据

php - 以 sha512 :1000: contain? 开头的 MYSQL 条目是什么

mysql - 将数据库导入到 ms sql server

mysql - 将 MYSQL 数据库导入 NeO4j