MySQL问题:如何插入唯一的非整数员工ID?

问题描述:

我想将数据插入到类似下面的表格:MySQL问题:如何插入唯一的非整数员工ID?

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

在这里所有的EMP_ID数据应该是唯一的,但应遵循EMP的模式***。请帮忙。我是db的新手。

+1

emp_id是否必须是一个字符串?使用auto_increment整数作为主键会更简单,更高效。 – samplebias 2011-04-13 02:54:26

+0

这是在这里回答http://*.com/questions/3245429/autoincrement-of-table-id-using-string-combination-in-database-automatically – Chris 2011-04-13 03:08:15

+1

注意,除非你有一个非常非常好的理由那样做,你不应该做这样的事情。 – Spyros 2011-04-13 03:39:00

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'); 

有一次我问similar question,但后来我意识到,这不是好主意,添加前缀/后缀有自动递增场

更好

ü改变你的表结构

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)."))"; 

如果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 | 
+--------+----+---------+ 

那儿剽窃:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html