如何在mysql中自动初始化timestamp列
我正在使用MySQL,我制作了一个表,它有一个如何在mysql中自动初始化timestamp列,mysql,Mysql,我正在使用MySQL,我制作了一个表,它有一个TIMESTAMP列,将当前时间和日期添加到添加的每一行中。但我不知道在向该表插入数据时如何初始化它。我的SQL查询是: 表格 “创建表如果不存在消息(mess\u id int主键自动递增、mess\u from int、mess\u to int、mess\u txt VARCHAR(20000)、mess\u时间戳、外键(mess\u from)引用用户(id)、外键(mess\u to)引用用户(id))” 插入 “插入用户消息(空,“+da
TIMESTAMP
列,将当前时间和日期添加到添加的每一行中。但我不知道在向该表插入数据时如何初始化它。我的SQL查询是:
表格
“创建表如果不存在消息(mess\u id int主键自动递增、mess\u from int、mess\u to int、mess\u txt VARCHAR(20000)、mess\u时间戳、外键(mess\u from)引用用户(id)、外键(mess\u to)引用用户(id))”
插入
“插入用户消息(空,“+data.from+”,“+data.to+”,“+data.text+”,默认)”
问题是,我不知道如何初始化timestamp列,我尝试了NULL
和DEFAULT
但都显示了无效语法的错误。我希望时间戳字段自动初始化!就这样
在创建表时,将timestamp列上的默认值设置为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\u time
字段设置为当前时间戳,并且不包含该字段的显式值。当该行发生更新时,它将不起作用。您可以设置它,以便在每次更新时使用“on update current_timestamp”将时间戳设置为当前时间戳
执行插入时,不要指定时间戳列:
INSERT INTO user_messages (mess_from,mess_to, mess_text) VALUES (@FromValue,@ToValue,@TextValue)
(以上操作在所有情况下都有效。有一个系统变量控制是否可以使用NULL插入当前的_时间戳。这不是标准,与其他SQL引擎不太兼容,因此通常设置为标准模式
该变量对于时间戳是显式的,但已被弃用,并且这些非标准行为将在将来的mysql版本中被删除,因此我不建议使用它。)在创建表时,将时间戳列上的默认值设置为当前时间戳
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\u time
字段设置为当前时间戳,并且不包含该字段的显式值。当该行发生更新时,它将不起作用。您可以设置它,以便在每次更新时使用“on update current_timestamp”将时间戳设置为当前时间戳
执行插入时,不要指定时间戳列:
INSERT INTO user_messages (mess_from,mess_to, mess_text) VALUES (@FromValue,@ToValue,@TextValue)
(以上操作在所有情况下都有效。有一个系统变量控制是否可以使用NULL插入当前的_时间戳。这不是标准,与其他SQL引擎不太兼容,因此通常设置为标准模式
该变量对于时间戳是显式的,但已被弃用,并且这些非标准行为将在将来的mysql版本中被删除,因此我不建议使用它。)尝试以下操作:
INSERT INTO user_messages (NULL, '"+data.from+"', '"+data.to+"', '"+data.text+"', now());
请尝试以下操作:
INSERT INTO user_messages (NULL, '"+data.from+"', '"+data.to+"', '"+data.text+"', now());
这是一个MySQL问题吗?它似乎与SQLServer无关,SQLServer是另一种产品。您也迫切需要这样做。是的,这是MySQL。如果列具有已定义的默认值,您只需将该列从insert中排除即可获得默认值。如果您希望实际的时间戳作为默认值,您也可以插入NOW()这是一个MySQL问题吗?它似乎与SQLServer无关,SQLServer是另一种产品。您也迫切需要这样做。是的,这是MySQL。如果列具有已定义的默认值,您只需将该列从insert中排除即可获得默认值。如果您希望实际时间戳作为默认值,也可以立即插入()对不起,我没有处理insert语句。已编辑。INSERT语句应排除timestamp字段。当前\u timestamp不起作用。它没有被人认出MYSQL@JasonGenX支持当前时间戳。抱歉,我没有处理INSERT语句。已编辑。INSERT语句应排除timestamp字段。当前\u timestamp不起作用。它没有被人认出MYSQL@JasonGenX支持当前时间戳。