簡體   English   中英

為什么 MySQL 不允許在 VARCHAR 列上使用 auto_increment?

[英]Why doesn't MySQL allow auto_increment on VARCHAR columns?

我有以下 SQL 語句:

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

這個聲明不起作用,我不明白為什么。 我到處都看到 AUTO_INCREMENT 只適用於一個整數。 為什么它只適用於整數? 如果我想要混合使用 INT 和 CHAR 怎么辦,為什么默認值不起作用?

此查詢不起作用

錯誤消息告訴您原因。 簡而言之,你不能auto_increment字符數據。 你甚至期望它做什么,真的嗎?

即使它被實現了(我想它可能會實現,但 MySQL 團隊從來沒有一個令人信服的理由這樣做),你會用你的主鍵中的不可打印和不可打字的字符做什么? 想象一個以BELL字符作為主鍵的記錄。 這聽起來並不好玩。

無論我在哪里看到 auto_increment 僅適用於 int

因為只有整數才能有意義地遞增。 它們對每個增量都有一個非常明確的步驟和一個非常明確的值邊界。 其他數據類型沒有。

如果我希望它是 char 和 int 混合怎么辦

想要某事並不能讓它發生。 關系數據庫中的每一列都必須有一個定義的類型。 一列不能有多種類型。

為什么默認值不起作用

因為您將列定義為字符數據,但將默認值定義為數值。 字符數據的默認值必須是字符值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM