我必须在数据库中存储复杂的数据。像21/2011
那样21
是文档编号,但2011
是文档年。因此,我需要一些约束来处理唯一性,因为存在编号为21/2010
和21/2012
的文档。
如果从1开始编号并且对复数值进行唯一性检查,我该如何创建这样的约束?
答案 0 :(得分:0)
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
,但您必须明确提供这些数字。
答案 1 :(得分:0)
问题是什么,您只需在这两列上创建唯一键即可。
另一种方法是将“21/2010”存储为单个varchar列。