當我必須在數據庫中存儲複雜數據編號時,我有這種情況。類似於21/2011
其中21
是文檔編號,但2011
是文檔年。所以我需要一些約束來處理唯一性,因爲有文件編號爲21/2010
和21/2012
。計算列的MySQL約束
如何在編號從1開始時創建這樣的約束,並且對複數值有唯一性檢查?
當我必須在數據庫中存儲複雜數據編號時,我有這種情況。類似於21/2011
其中21
是文檔編號,但2011
是文檔年。所以我需要一些約束來處理唯一性,因爲有文件編號爲21/2010
和21/2012
。計算列的MySQL約束
如何在編號從1開始時創建這樣的約束,並且對複數值有唯一性檢查?
CREATE TABLE documents
(
year INT NOT NULL,
no INT AUTO_INCREMENT,
PRIMARY KEY (year, no)
) ENGINE=MyISAM;
INSERT
INTO documents(year)
VALUES (2010),
(2010),
(2011);
SELECT *
FROM documents;
不幸的是,AUTO_INCREMENT
部分將只爲MyISAM
表的工作,但是,唯一性檢查將在InnoDB
工作爲好,但你必須明確提供的數字。
什麼問題,你可以簡單地在這兩列上創建一個唯一的鍵。
另一種方法是將「21/2010」存儲爲單個varchar列。