这可能在MySql中?我可以有一个自动递增的主键,前缀为一个字母,如R1234,R1235,R1236 ...等等。MySql自动递增字母数字主键?
回答
你可以做的是将密钥存储为两列。一个字符前缀和一个自动递增的int,它们都是为主键分组的。
CREATE TABLE myItems (
id INT NOT NULL AUTO_INCREMENT,
prefix CHAR(30) NOT NULL,
PRIMARY KEY (id, prefix),
...
注意这只适用于MyISAM,不适用于InnoDB表类型。 –
您只需要一个字母作为前缀,即R123,因此您应该使用CHAR(1)而不是CHAR(30)来节省空间。如果你需要两个字母作为前缀,即RG123,那么你应该使用CHAR(2)。 –
如果前导字符不变,我会避免使用复合键。用一对变量识别记录会相当混乱。 –
你可以做到这两个领域。但是根据我的理解,你无法在一个领域做到这一点。
create table foo (
code char,
id int unsigned not null auto_increment
primary key(id,code)
);
不可以,但对于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
你可以从here获取更多详细信息 注意:它不适用于INNODB引擎
- 1. 自动递增的主字母数字键
- 2. 复合(字母数字)主键和自动增量
- 3. MySQL:多个主键和自动递增
- 4. mysql自动递增主键耗尽
- 5. 非主键列的自动递增数字生成
- 6. 用一串数字和字母自动递增
- 7. 使用字母数字自动递增值
- 8. 自动递增的数字
- 9. MySQL自动增加加上一列中的字母数字
- 10. 递增的字母数字字符串
- 11. MySQL主键只能自动递增奇数 - 为什么?
- 12. 自动递增的字段不是一个主键
- 13. 有一个主键以及自动递增字段
- 14. mysql的不是唯一的自动递增,主键两个字段
- 15. 非典型字母和数字递增
- 16. 使用saveToCassandra时自动递增主键()
- 17. 自动增加主键(MySQL)的问题
- 18. MySQL的:自动递增组合键
- 19. 自动递增字段不
- 20. 如何调用自动递增的MySQL的主键Java变量
- 21. 使用Python/MySQL选择自动递增主键的最大值
- 22. MySQL:更改自动递增主键的顺序?
- 23. MYSQL自动递增主键的实际问题
- 24. 递增mysql计数字段
- 25. c中字母的递增#
- 26. 由日期和自动递增整数组成的字符串主键
- 27. 流利的nHibernate,自动递增数字以外的一个键
- 28. 自动增量主键
- 29. Java中的“自动增量”字母表?
- 30. 如何从mysql表中获取自动递增字段名称或主键字段名称?
不是MySQL专家,但您可能想检查它是否支持序列。 – Limey
目的是什么?这看起来像是违反了数据库设计的基本规则。一列只能包含一条信息。像这样连接字母数字往往表明这种规范化的规则正在被侵犯。并不总是,但通常。 –