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


MySQL question: How to insert unique non-integer employee ids?

我想在表中插入如下数据:

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

这里所有emp_id数据都应该是唯一的,但应该遵循emp***的模式。请帮助。我是db的新手。

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

曾经我问过类似的问题,但后来我意识到,这不是一个好主意,添加前缀/后缀与自动增量字段

better u change your table structure

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

和u可以使用下面的查询

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