MySql Автоинкрементный буквенно-цифровой первичный ключ? - PullRequest
5 голосов
/ 22 июня 2011

Возможно ли это в MySql ?? Могу ли я иметь автоинкрементный первичный ключ с префиксом буквы, что-то вроде R1234, R1235, R1236 ... и т. Д. ??

Ответы [ 3 ]

10 голосов
/ 22 июня 2011

Что вы можете сделать, это сохранить ключ в виде двух столбцов.Префикс char и автоинкрементный int, оба из которых сгруппированы для первичного ключа.

CREATE TABLE myItems (
    id INT NOT NULL AUTO_INCREMENT,
    prefix CHAR(30) NOT NULL,
    PRIMARY KEY (id, prefix),
    ...
3 голосов
/ 22 июня 2011

Нет. Но для таблиц MyIsam вы можете создать многостолбцовый индекс и поместить поле auto_increment во вторичный столбец, так что у вас будет почти то же, что вы просите:

CREATE TABLE t1 (prefix CHAR(1) NOT NULL, id INT UNSIGNED AUTO_INCREMENT NOT NULL,  
..., PRIMARY KEY(prefix,id)) Engine = MyISAM;
INSERT INTO t1(prefix) VALUES ('a'),('a'),('b'),('b');
SELECT * FROM t1;
a  1
a  2
b  1
b  2

Более подробную информацию можно получить у здесь Примечание: это не будет работать для двигателя INNODB

2 голосов
/ 22 июня 2011

вы можете сделать это с двумя полями, как это.но вы не можете сделать это с одним полем, насколько мне известно.

create table foo (
  code char,
  id int unsigned not null auto_increment
  primary key(id,code)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...