为什么MySQL不允许对VARCHAR列进行auto_increment?

时间:2015-06-30 19:42:02

标签: mysql

我有以下SQL语句:

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

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

1 个答案:

答案 0 :(得分:4)

  

此查询不起作用

错误消息告诉您原因。简单地说,你不能auto_increment字符数据。你甚至期望这样做,真的吗?

即使它已经实现(我想它可以,但是MySQL团队从来没有令人信服的理由这样做),你会怎么做不可打印和不可打字的字符在你的主键?想象一下以BELL字符为主键的记录。这听起来不是很有趣。

  

无论我在哪里看到auto_increment只使用int

因为只有整数才能有意义地增加。它们为每个增量和非常明确定义的值边界定义了非常明确的步骤。其他数据类型没有。

  

如果我想让它成为char和int混合

想要某些东西并不能实现。关系数据库中的每一列都必须具有已定义的类型。一列不能有多种类型。

  

为什么默认值不起作用

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