2011-04-13 7 views
0

MySQLの質問:一意の非整数従業員IDを挿入するには?私は次のようにテーブルにデータを挿入したい

emp_id   emp_data 
---------------------------- 
emp001   Amit 
emp002   Ajit 
emp003   Arijit 

こっちすべてEMP_IDデータが一意である必要がありますが*** EMPのパターンに従ってください。助けてください。私はdbの初心者です。

+1

emp_idは文字列でなければなりませんか? auto_increment整数を主キーとして使用する方が簡単で効率的です。 – samplebias

+0

これはここに答えています。あなたが非常に(非常に)正当な理由がない限り、これは、ここで答えています。http://stackoverflow.com/questions/3245429/autoincrement-of-table-id-using-string-combination-in-database-automatically – Chris

+1

そういうことはしないでください。 – Spyros

答えて

1
create table employee (
    empnum varchar(10) primary key 
, empname varchar(60) 
); 

insert into employee values ('emp001', 'Employee 1'); 
insert into employee values ('emp002', 'Employee 2'); 
insert into employee values ('100emp', 'Employee 3'); 
0

iがsimilar questionを尋ねたら、それ以降の私は、これはより良い

uはあなたのテーブル構造を変更する自動インクリメントフィールドに接頭辞/接尾辞を追加することは良い考えではない、という認識

emp_id emp_uniq_id emp_data 
---------------------------------- 
1   emp001   Amit 
2   emp002   Ajit 
3   emp003   Arijit 

とあなたは以下のクエリを使用できます

mysql_query("UPDATE table_name SET emp_uniq_id=CONCAT('emp', ".str_pad(emp_id,3,'0',STR_PAD_LEFT)."))"; 
0

emp接頭辞は定数のままになります。アプリケーション論理を格納し、データベースから列を取得する際に前置する方が意味があります。

いずれにしても、数値カラムはAUTO_INCREMENTにしかなりません。そのような

言われたこと

、あなたができるグループあなたの主キー:

CREATE TABLE animals (
    grp ENUM('fish','mammal','bird') NOT NULL, 
    id MEDIUMINT NOT NULL AUTO_INCREMENT, 
    name CHAR(30) NOT NULL, 
    PRIMARY KEY (grp,id) 
) ENGINE=MyISAM; 

INSERT INTO animals (grp,name) VALUES 
    ('mammal','dog'),('mammal','cat'), 
    ('bird','penguin'),('fish','lax'),('mammal','whale'), 
    ('bird','ostrich'); 

SELECT * FROM animals ORDER BY grp,id; 

選択の出力は次のようになります。オンラインドキュメントから

+--------+----+---------+ 
| grp | id | name | 
+--------+----+---------+ 
| fish | 1 | lax  | 
| mammal | 1 | dog  | 
| mammal | 2 | cat  | 
| mammal | 3 | whale | 
| bird | 1 | penguin | 
| bird | 2 | ostrich | 
+--------+----+---------+ 

Cribbed:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

関連する問題