【问题标题】:Why doesn't MySQL allow auto_increment on VARCHAR columns?为什么 MySQL 不允许在 VARCHAR 列上使用 auto_increment?
【发布时间】:2015-07-01 03:58:52
【问题描述】:

我有以下 SQL 语句:

CREATE TABLE patient(
   patient_id VARCHAR(10) NOT NULL DEFAULT 1000 AUTO_INCREMENT PRIMARY KEY);

这句话不起作用,我不明白为什么。我在任何地方看到 AUTO_INCREMENT 只适用于整数。为什么它只适用于整数?如果我想要 INT 和 CHAR 的混合,为什么默认值不起作用?

【问题讨论】:

标签: mysql


【解决方案1】:

此查询无效

错误消息告诉您原因。简单来说就是不能auto_increment字符数据。真的,你甚至会期望它做什么?

即使它被实现了(我想它可能是这样,但 MySQL 团队从来没有一个令人信服的理由这样做),你会如何处理不可打印和不可输入的字符在你的主键?想象一条以BELL 字符作为主键的记录。这听起来并不有趣。

只要我看到 auto_increment 仅适用于 int

因为只有整数可以有意义地递增。它们对于每个增量都有一个非常明确的步骤和一个非常明确的值边界。其他数据类型没有。

如果我希望它是 char 和 int 混合起来怎么办

想要某事不会让它发生。关系数据库中的每一列都必须具有定义的类型。一列不能有多个类型。

为什么默认值不起作用

因为您将列定义为字符数据,但将默认值定义为数值。字符数据的默认值必须是字符值。

【讨论】:

  • 完全正确:a...z...???你是对的。计算机不是由一厢情愿的想法驱动的,尽管项目经理通常认为程序员是。
  • “想要的东西不会让它发生。”说得好,先生!
猜你喜欢
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 2014-08-23
  • 2017-03-18
  • 2010-11-10
  • 2019-01-23
  • 2011-07-17
相关资源
最近更新 更多