我有以下SQL语句:
CREATE TABLE patient(
patient_id VARCHAR(10) NOT NULL DEFAULT 1000 AUTO_INCREMENT PRIMARY KEY);
这句话不起作用,我不明白为什么。在任何地方,我看到AUTO_INCREMENT只适用于整数。为什么它只适用于整数?如果我想要混合INT和CHAR,以及为什么默认值不起作用怎么办?
答案 0 :(得分:4)
此查询不起作用
错误消息告诉您原因。简单地说,你不能auto_increment
字符数据。你甚至期望这样做,真的吗?
即使它已经实现(我想它可以,但是MySQL团队从来没有令人信服的理由这样做),你会怎么做不可打印和不可打字的字符在你的主键?想象一下以BELL
字符为主键的记录。这听起来不是很有趣。
无论我在哪里看到auto_increment只使用int
因为只有整数才能有意义地增加。它们为每个增量和非常明确定义的值边界定义了非常明确的步骤。其他数据类型没有。
如果我想让它成为char和int混合
想要某些东西并不能实现。关系数据库中的每一列都必须具有已定义的类型。一列不能有多种类型。
为什么默认值不起作用
因为您将列定义为字符数据,但将默认值定义为数值。字符数据的默认值必须是字符值。