我是否正确理解了 MySQL 的行为?

问题描述 投票:0回答:1

我用这样的命令创建了表

CREATE TABLE sometable (number INT DEFAULT (300));

+--------+------+------+-----+---------+-------------------+
| Field  | Type | Null | Key | Default | Extra             |
+--------+------+------+-----+---------+-------------------+
| number | int  | YES  |     | 300     | DEFAULT_GENERATED |
+--------+------+------+-----+---------+-------------------+

而且因为表达式(300)而不是简单的300,MySQL认为它是一个表达式,每次你向表添加默认值时他都会计算它,所以MySQL添加了一个

DEFAULT_GENERATED
。正确的? (当我创建相同的表格但没有 300 左右的括号时,不会添加
DEFAULT_GENERATED
。)

mysql default
1个回答
1
投票

是的,您的理解是正确的您可以将一个表达式放入

DEFAULT
中,它只是一个单一的文字值。如果您使用括号的语法提示,那么这将被视为一个表达式。

如果您担心表达式的性能开销,我认为计算这样一个简单的表达式(单个文字)不太可能是一个重大的性能问题。

请记住,仅当您

DEFAULT
并且仅当您不为该列提供值时才使用
INSERT
表达式。

在后面的

SELECT
查询中,没有什么区别。无论您最初是使用
DEFAULT
还是通过指定值插入行,它都会读取存储的值。

© www.soinside.com 2019 - 2024. All rights reserved.