mysql - 如何自动初始化mysql中的时间戳列

标签 mysql

我正在使用 MySQL,我制作了一个表,其中有一个 TIMESTAMP 列,它将当前时间和日期添加到添加的每一行。但我不知道当我向该表插入数据时如何初始化它。我的 SQL 查询是:

表格

“如果不存在则创建表消息(mess_id int PRIMARY KEY AUTO_INCRMENT、mess_from int、mess_to int、mess_txt VARCHAR(20000)、mess_time TIMESTAMP、FOREIGN KEY (mess_from) REFERENCES users(id)、FOREIGN KEY (mess_to) ) 引用用户(id) )"

插入

“INSERT INTO user_messages (NULL,'"+data.from+"','"+data.to+"','"+data.text+"',默认)"

The problem is, I don't know how to initialize the timestamp column, I tried NULL and DEFAULT but both show me this error of invalid syntax. I want the timestamp field to be initialized automatically! That's it.

最佳答案

在创建表时,将时间戳列的默认值设置为 CURRENT_TIMESTAMP。

CREATE TABLE IF NOT EXISTS messages ( 
    mess_id int PRIMARY KEY AUTO_INCREMENT, 
    mess_from int, 
    mess_to int, 
    mess_txt VARCHAR(20000), 
    mess_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    FOREIGN KEY (mess_from) REFERENCES users(id),FOREIGN KEY (mess_to) REFERENCES users(id) )

编辑: 为了完整起见,当插入新记录并且不包含该字段的显式值时,这会将 mess_time 字段设置为当前时间戳。当该行发生更新时,它不会产生任何影响。您可以设置它,以便在每次更新时使用“ON UPDATE CURRENT_TIMESTAMP”将时间戳设置为当前时间戳

CREATE TABLE IF NOT EXISTS messages ( 
    mess_id int PRIMARY KEY AUTO_INCREMENT, 
    mess_from int, 
    mess_to int, 
    mess_txt VARCHAR(20000), 
    mess_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    FOREIGN KEY (mess_from) REFERENCES users(id),FOREIGN KEY (mess_to) REFERENCES users(id) )

执行 INSERT 时,不要指定时间戳列:

INSERT INTO user_messages (mess_from,mess_to, mess_text) VALUES (@FromValue,@ToValue,@TextValue)

(上面的方法在所有情况下都有效。有一个系统变量控制是否可以使用 NULL 插入 current_timestamp。这不是标准的,与其他 SQL 引擎的兼容性较差,因此通常设置为标准模式。

该变量是explicit_defaults_for_timestamp,但它已被弃用,并且这些非标准行为将在未来的mysql版本中删除,因此我不建议使用它。)

关于mysql - 如何自动初始化mysql中的时间戳列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960377/

相关文章:

php - 正确的日期格式

php - 将数据写入sql表/http错误500

php - 处理 PDO::prepare() 添加的引号

MYSQL 条件 ORDER BY 语句

mysql - 使用 SQL 计算 "activation"百分比

mysql - 在 MySQL 中存储大量文本的最节省空间的方法是什么?

python Flask SQLAlchemy 将数据插入 mysql

php - mysql_query() : how to check whether any rows are updated in case of UPDATE SQL

mysql - 如何在关系数据库中共享资源(特定情况)?

php - 在多列中搜索多个项目