Вопрос MySQL: как вставить уникальные нецелые идентификаторы сотрудников? - PullRequest
0 голосов
/ 13 апреля 2011

Я хочу вставить данные в таблицу, как показано ниже:

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

Здесь все данные emp_id должны быть уникальными, но должны следовать шаблону emp ***.Пожалуйста помоги.Я новичок в ДБ.

Ответы [ 3 ]

1 голос
/ 13 апреля 2011
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 голосов
/ 13 апреля 2011

Если префикс 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

0 голосов
/ 13 апреля 2011

однажды я задал аналогичный вопрос , но позже я понял, что не стоит добавлять префикс / суффикс с полем автоматического увеличения

лучше вы измените структуру таблицы

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).") )";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...