CREATE TABLE AlarmHistory
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
value DOUBLE NOT NULL,
startedStamp TIMESTAMP NOT NULL,
finishedStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
);
尝试创建上述表时,出现以下错误:“ SQL错误(1293):错误的表定义; DEFAULT或ON
UPDATE子句中只能有一个TIMESTAMP列,其CURRENT_TIMESTAMP”。
我的问题是一个错误吗?因为可以肯定,我有两个TIMESTAMP列,但是其中只有一个具有默认定义。当我删除startedStamp时,我没有任何错误。
根据MySQL手册5.5版,自动初始化和更新TIMESTAMP
既不指定
DEFAULT CURRENT_TIMESTAMP
也不ON UPDATE CURRENT_TIMESTAMP
指定,则与指定DEFAULT CURRENT_TIMESTAMP
和相同ON UPDATE CURRENT_TIMESTAMP
。
CREATE TABLE t1 (
ts TIMESTAMP
);
然而,
如果为常数,则默认值为给定值。在这种情况下,该列根本没有自动属性。
CREATE TABLE t1 (
ts TIMESTAMP DEFAULT 0
);
因此,这应该工作:
CREATE TABLE AlarmHistory
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
value DOUBLE NOT NULL,
startedStamp TIMESTAMP DEFAULT 0 NOT NULL,
finishedStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
小提琴
问题内容: 为什么在DEFAULT或ON UPDATE子句中只能有一个带有CURRENT_TIMESTAMP的TIMESTAMP列? 导致的错误: 错误代码:1293 表定义不正确;DEFAULT或ON UPDATE子句中只能有一个带有CURRENT_TIMESTAMP的TIMESTAMP列 问题答案: 仅由于历史,代码遗留原因,此限制在MySQL的最新版本中已解除: MySQL 5.6.5的更改
问题内容: 我想在条件之前写一个子句,因为我需要将结果截短到仅10个,但是我需要首先按字母顺序对它们进行排序。 我知道,你不能把以前那么我该怎么办呢? 我需要执行以下操作: 问题答案: 您可以为此使用内联视图
问题内容: 当我尝试运行以下查询时出现错误: 是什么导致此错误? 问题答案: 将一个返回多列的子查询放在列表中,然后从中选择。 首先,相关子查询将是一个坏主意。但是,您的查询甚至没有关联,但是 没有关联 (没有链接到外部查询),并且似乎返回了多行。这导致产生笛卡尔积的(可能非常昂贵且荒谬的)交叉连接,可能不是您的(秘密)意图。 看起来您确实想要: 两者也都是毫无意义的。WHERE条件将一个强制为a
问题内容: 我想要一个有两列的表。一栏用于记录的创建时间,另一栏用于记录的修改时间。我希望这些值由数据库处理。我不想让我的应用程序层考虑一下。 我知道,如果您有一个带有或的列,那么您将无法拥有另一个列。您可以使用,但没有办法在触发器之外默认它,据我所知。 我发现您可以具有多个列,方法是将每个列不带或保留,并在创建记录时插入,以使每个列具有当前时间戳。从这一点开始,第一列将自动更新。 这个效果非常好
我正在运行MySQL Workbench 6.3。8 b1228 CE(64位)处于“安全更新模式”。我试图使用“WHERE”语句运行查询,但它仍然返回“Error 1175” 这是我的查询语句: (显然my_db和table_name是占位符。) 当我包含了最基本的“WHERE”语句时,为什么工作台会对此查询抛出错误1175?
问题内容: 我有一个名为表有三列:,,。 我正在尝试创建一个查询,该查询将根据昵称返回余额,并且在使用此查询时遇到错误: 有人可以在这里看到我做错了吗? 问题答案: 反引号(`)用于标识符,例如表名,列名等。单引号(’)用于字符串文字。 您想做: 或者,更明确地说: 如果没有歧义的可能性,并且表/列名称没有特殊字符或空格,则可以将`设置为off。 这是一些干燥且难以阅读的文档:http : //d