这可能在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自动增量ID或字母数字ID作为外键
- 4. 增量字母数字主键
- 5. MySQL:多个主键和自动递增
- 6. mysql自动递增主键耗尽
- 7. 自动递增列主键
- 8. 递增字母数字
- 9. 自动递增字母数字字符Id
- 10. 自动增量字母数字(字母数字++)值在C#.net
- 11. 非主键列的自动递增数字生成
- 12. 自动递增的数字
- 13. 用一串数字和字母自动递增
- 14. 如何自动递增ID号与字母和数字
- 15. 自动递增字母数字的PHP,JavaScript的
- 16. 使用字母数字自动递增值
- 17. MySQL自动增加加上一列中的字母数字
- 18. 递增的字母数字字符串
- 19. MySQL主键只能自动递增奇数 - 为什么?
- 20. 使用MySQL的正常主键自动递增或复合键
- 21. 有一个主键以及自动递增字段
- 22. 自动递增的字段不是一个主键
- 23. mysql的不是唯一的自动递增,主键两个字段
- 24. 非典型字母和数字递增
- 25. 如何从SQL Server中的自定义数字自动递增主键?
- 26. Simple.Data与非自动递增主键(uuid_short)
- 27. C#自动递增的主键
- 28. 使用saveToCassandra时自动递增主键()
- 29. mysql主键自动增量问题
- 30. mysql无限主键自动增量
不是MySQL专家,但您可能想检查它是否支持序列。 – Limey
目的是什么?这看起来像是违反了数据库设计的基本规则。一列只能包含一条信息。像这样连接字母数字往往表明这种规范化的规则正在被侵犯。并不总是,但通常。 –