`
flex_莫冲
  • 浏览: 1092817 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个表中出现多个timestamp并设置其中一个为current_timestamp的问题

阅读更多

一个表中出现多个timestamp并设置其中一个为current_timestamp的时候经常会遇到

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

原因是当你给一个timestamp设置为on update current_timestamp的时候,其他的timestamp字段需要显式设定default值

但是如果你有两个timestamp字段,但是只把第一个设定为current_timestamp而第二个没有设定默认值,mysql也能成功建表, 但是反过来就不行...参见这里

参考文章:

Why there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT clause?

MySQL的timestamp类型自动更新问题

mysqldoc - timestamp

eg:

?
CREATE TABLE `users` (
? `iUId` int(10) unsigned NOT NULL AUTO_INCREMENT,
? `szUsername` varchar(45) NOT NULL,
? `szEmail` varchar(60) DEFAULT NULL,
? `szPassword` varchar(64) NOT NULL, ?
? `szInsertTime` timestamp NOT NULL DEFAULT 0,
? `szLastModTime` timestamp ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
? `iStatus` int(11) NOT NULL DEFAULT '0',
? PRIMARY KEY (`iUId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
分享到:
评论

相关推荐

    mysql多个TimeStamp设置的方法解读

    然而,MySQL的一个限制是每个表只能有一个Timestamp字段默认为CURRENT_TIMESTAMP,并且如果该字段被设置为NOT NULL,MySQL会隐式地将其设为默认值。这意味着在同一个表中不能有两个Timestamp字段都使用这两个特性。 ...

    MySQL错误TIMESTAMP column with CURRENT_TIMESTAMP的解决方法

    在本文中,我们将深入探讨一个常见的问题,即在创建包含多个TIMESTAMP列,并希望它们具有CURRENT_TIMESTAMP特性时遇到的错误,以及如何在不同版本的MySQL中解决这个问题。 错误描述为"ERROR 1293 (HY000): ...

    MySQL的datetime设置当前时间为默认值[定义].pdf

    在上面的示例中,我们创建了一个名为 `test_mysql_timestamp` 的表,该表有两个字段:`id` 和 `begin_time`。其中,`begin_time` 字段是一个 TIMESTAMP 类型,具有默认值 CURRENT_TIMESTAMP,且在更新时自动更新为...

    SQL | 创建时间,更新时间,使用默认值自动设置|data-412945.pdf

    通过`ALTER TABLE`语句,我们可以向现有表添加一个新字段`create_time`,并将其默认值设置为`CURRENT_TIMESTAMP`,表示插入数据时的当前时间。例如: ```sql ALTER TABLE 表名 ADD ( `create_time` TIMESTAMP ...

    mysql如何设置默认时间为当前时间

    - 如果在一个事务中多次更新同一行,`TIMESTAMP`字段只会更新一次,即在事务提交时更新为当时的系统时间。 通过本文的介绍,相信你对如何在MySQL中设置默认时间为当前时间有了全面的理解,这将帮助你在设计数据库...

    MySQL 5.6 中 TIMESTAMP有那些变化

    3. 表中的第一个 TIMESTAMP 列,如果没有声明 NULL、DEFAULT 或 ON UPDATE 子句,会自动分配 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 属性。 4. 第二个 TIMESTAMP 列,如果没有声明为 NULL 或 ...

    mysql自动生成时间1

    此外,需要注意的是,从MySQL 5.6.5版本开始,可以设置多个字段的默认值为`CURRENT_TIMESTAMP`,但只有一个可以设置为`ON UPDATE CURRENT_TIMESTAMP`,这意味着只有这个字段会在记录更新时自动更新。如果你想要在多...

    MySQL timestamp自动更新时间分享

    你可以为其中一个字段设置`ON UPDATE CURRENT_TIMESTAMP`,而其他字段则不设置,以避免冲突。 8. **时间戳与NULL值**: - 除非明确指定`NOT NULL`,否则timestamp字段可以接受NULL值。`NOT NULL`约束确保字段始终...

    同步一个表的步凑1

    在SymmetricDS中,`Channel`是一个逻辑概念,它代表了一个数据同步的流程,可以包含一个或多个希望在一个事务中同步的表。创建Channel的SQL语句如下: ```sql INSERT INTO sym_channel (channel_id, processing_...

    MySQL 5.6 中 TIMESTAMP 的变化分析

    2. 表中的第一个TIMESTAMP列,如果未声明NULL、DEFAULT或ON UPDATE属性,会自动获得DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性。这使得该列在插入新行时默认设置为当前时间,并在后续更新时自动...

    省市区(县)mysql语句

    MySQL作为一个广泛使用的开源关系型数据库管理系统,是管理和操作这类数据的理想选择。本主题将详细解析“省市区(县)mysql语句”相关的知识点。 首先,`sys_province.sql`可能包含了创建省级行政区划表的SQL语句...

    mysql timestamp数据类型

    在描述中提到的限制,即在同一表中无法有多个`TIMESTAMP`列,这是MySQL早期版本的一个特性。在这些版本中,如果一个表定义了两个或更多的`TIMESTAMP`列,只有第一个会被自动更新,通常是在插入或更新记录时。为了...

    mysql 设置自动创建时间及修改时间的方法示例

    - 如果同时有多个`TIMESTAMP`字段并设置了`ON UPDATE CURRENT_TIMESTAMP`,只有一个字段会自动更新,除非明确指定每个字段的更新行为。 了解这些方法后,你可以在MySQL数据库中轻松地管理和维护数据的创建和修改...

    Oracle迁移到DB2 SQL语句差异

    AS SELECT`语句来创建一个新表,并复制另一个表的数据。 ```sql CREATE TABLE A AS SELECT * FROM B; ``` **DB2**: 使用`CREATE TABLE LIKE`语句来创建一个结构相同的新表。 ```sql CREATE TABLE A LIKE B; ``` #...

    MySQL版本低了不支持两个时间戳类型的值解决方法

    然而,在某些旧版本的MySQL中,存在一个限制,即一个表中只能有一个TIMESTAMP列可以自动设置为CURRENT_TIMESTAMP,这是由MySQL的特定版本特性决定的。这个问题在您描述的场景中出现,由于两台服务器上的MySQL版本...

    MySQL演示如何创建数据库和表,并添加更多的选项和约束

    - **`created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP`**:定义了一个名为`created_at`的时间戳列,并设置了默认值为当前时间戳(`CURRENT_TIMESTAMP`)。这意味着每当向表中插入一条新记录时,如果未显式指定`...

    一场Pandas与SQL的巅峰大战三1

    在Pandas中,如果你已经有一个日期字符串,可以通过`pd.to_datetime()`函数将其转换为日期格式。对于Unix时间戳,可以使用`pd.Timestamp.fromtimestamp()`将可读日期转换为Unix时间戳,反之,用`Timestamp.timestamp...

Global site tag (gtag.js) - Google Analytics