複雑なデータ番号をデータベースに格納する必要がある場合があります。そのようなもの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列として格納する方法もあります。