一个表中出现多个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字段默认为CURRENT_TIMESTAMP,并且如果该字段被设置为NOT NULL,MySQL会隐式地将其设为默认值。这意味着在同一个表中不能有两个Timestamp字段都使用这两个特性。 ...
在本文中,我们将深入探讨一个常见的问题,即在创建包含多个TIMESTAMP列,并希望它们具有CURRENT_TIMESTAMP特性时遇到的错误,以及如何在不同版本的MySQL中解决这个问题。 错误描述为"ERROR 1293 (HY000): ...
在上面的示例中,我们创建了一个名为 `test_mysql_timestamp` 的表,该表有两个字段:`id` 和 `begin_time`。其中,`begin_time` 字段是一个 TIMESTAMP 类型,具有默认值 CURRENT_TIMESTAMP,且在更新时自动更新为...
通过`ALTER TABLE`语句,我们可以向现有表添加一个新字段`create_time`,并将其默认值设置为`CURRENT_TIMESTAMP`,表示插入数据时的当前时间。例如: ```sql ALTER TABLE 表名 ADD ( `create_time` TIMESTAMP ...
- 如果在一个事务中多次更新同一行,`TIMESTAMP`字段只会更新一次,即在事务提交时更新为当时的系统时间。 通过本文的介绍,相信你对如何在MySQL中设置默认时间为当前时间有了全面的理解,这将帮助你在设计数据库...
3. 表中的第一个 TIMESTAMP 列,如果没有声明 NULL、DEFAULT 或 ON UPDATE 子句,会自动分配 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 属性。 4. 第二个 TIMESTAMP 列,如果没有声明为 NULL 或 ...
此外,需要注意的是,从MySQL 5.6.5版本开始,可以设置多个字段的默认值为`CURRENT_TIMESTAMP`,但只有一个可以设置为`ON UPDATE CURRENT_TIMESTAMP`,这意味着只有这个字段会在记录更新时自动更新。如果你想要在多...
你可以为其中一个字段设置`ON UPDATE CURRENT_TIMESTAMP`,而其他字段则不设置,以避免冲突。 8. **时间戳与NULL值**: - 除非明确指定`NOT NULL`,否则timestamp字段可以接受NULL值。`NOT NULL`约束确保字段始终...
在SymmetricDS中,`Channel`是一个逻辑概念,它代表了一个数据同步的流程,可以包含一个或多个希望在一个事务中同步的表。创建Channel的SQL语句如下: ```sql INSERT INTO sym_channel (channel_id, processing_...
2. 表中的第一个TIMESTAMP列,如果未声明NULL、DEFAULT或ON UPDATE属性,会自动获得DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性。这使得该列在插入新行时默认设置为当前时间,并在后续更新时自动...
MySQL作为一个广泛使用的开源关系型数据库管理系统,是管理和操作这类数据的理想选择。本主题将详细解析“省市区(县)mysql语句”相关的知识点。 首先,`sys_province.sql`可能包含了创建省级行政区划表的SQL语句...
在描述中提到的限制,即在同一表中无法有多个`TIMESTAMP`列,这是MySQL早期版本的一个特性。在这些版本中,如果一个表定义了两个或更多的`TIMESTAMP`列,只有第一个会被自动更新,通常是在插入或更新记录时。为了...
- 如果同时有多个`TIMESTAMP`字段并设置了`ON UPDATE CURRENT_TIMESTAMP`,只有一个字段会自动更新,除非明确指定每个字段的更新行为。 了解这些方法后,你可以在MySQL数据库中轻松地管理和维护数据的创建和修改...
AS SELECT`语句来创建一个新表,并复制另一个表的数据。 ```sql CREATE TABLE A AS SELECT * FROM B; ``` **DB2**: 使用`CREATE TABLE LIKE`语句来创建一个结构相同的新表。 ```sql CREATE TABLE A LIKE B; ``` #...
然而,在某些旧版本的MySQL中,存在一个限制,即一个表中只能有一个TIMESTAMP列可以自动设置为CURRENT_TIMESTAMP,这是由MySQL的特定版本特性决定的。这个问题在您描述的场景中出现,由于两台服务器上的MySQL版本...
- **`created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP`**:定义了一个名为`created_at`的时间戳列,并设置了默认值为当前时间戳(`CURRENT_TIMESTAMP`)。这意味着每当向表中插入一条新记录时,如果未显式指定`...
在Pandas中,如果你已经有一个日期字符串,可以通过`pd.to_datetime()`函数将其转换为日期格式。对于Unix时间戳,可以使用`pd.Timestamp.fromtimestamp()`将可读日期转换为Unix时间戳,反之,用`Timestamp.timestamp...