2011-01-26 25 views
1

複雑なデータ番号をデータベースに格納する必要がある場合があります。そのようなもの21/201121は文書番号ですが、2011は文書年です。したがって、番号21/201021/2012のドキュメントがあるため、一意性を処理するための制約が必要です。数値列のMySQLの制約

番号付けが1から始まり、複素数値の一意性チェックがある場合、どのようにして制約を作成できますか?

答えて

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で動作します。

0

問題は何ですか。これらの両方の列に一意のキーを作成するだけです。

「21/2010」を単一のvarchar列として格納する方法もあります。