关于MySQL DEFAULT_GENERATED标识的理解是否正确?
问题解答
你的理解完全正确。
具体原因:
- 当使用语句
CREATE TABLE sometable (number INT DEFAULT (300));时,MySQL会将括号包裹的300识别为表达式默认值——哪怕这个表达式只是一个简单的常量。此时MySQL会为该字段添加DEFAULT_GENERATED标识,用来表明这个默认值是通过表达式计算生成的(即便这里的计算逻辑只是返回固定值300)。 - 若去掉括号,使用
CREATE TABLE sometable (number INT DEFAULT 300);,这属于直接指定常量默认值,MySQL会直接将这个常量作为字段默认值存储,不会触发表达式计算的相关逻辑,因此不会出现DEFAULT_GENERATED标识。
简单来说,括号在这里起到了“标记为表达式”的作用,让MySQL以表达式默认值的逻辑处理这个默认值,从而产生了不同的表结构标识。
内容的提问来源于stack exchange,提问作者IT demon
相关产品推荐
相关产品推荐

