mysql - 如何创建一个带有字符串前缀的唯一自增字段?

标签 mysql auto-increment

我有一个包含 3 个项目的“用户”表。

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`customernumber` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`type` enum('customer','admin') COLLATE utf8_unicode_ci NOT NULL,

如何用“type”的前两个字母递增“customernumber”?

例如,ID=10 且类型='admin' 的用户的客户编号为“AD000010”。 ID = 12 且类型 = 'customer' 的用户将拥有一个 customernumber 'CU000012'?

是否可以在不使用触发器的情况下在 MySQL 中执行此操作?如果没有,我如何使用触发器执行此操作?

最佳答案

您可以将 key 存储为两列。一个 char 前缀和一个自动递增的 int,它们都被分组为主键。

CREATE TABLE myItems (
    id INT NOT NULL AUTO_INCREMENT,
    prefix CHAR(30) NOT NULL,
    PRIMARY KEY (id, prefix),
    ...

请引用此链接 How to make MySQL table primary key auto increment with some prefix 希望这对你有帮助。

关于mysql - 如何创建一个带有字符串前缀的唯一自增字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300784/

相关文章:

sql - Oracle数据库中的自动增量主键

php - 编辑 MySQL 行 PHP

mysql - 尝试从模型创建表时出错

mysql - 从另一个表中插入带有自动增量列的记录新表

mysql - 为什么 auto_incremnt 列在插入语句失败后增加它的值

java - 行未在 SQLite 中创建并检索 AUTOINCRMENT 值 - Android

java - 无法从mysql检索数据到java eclipse

使用 LAST_INSERT_ID() 在多个表上批量插入 MySQL

mysql - 错误 1833 (HY000) : Cannot change column MySQL

SQL Server 2005 ROW_NUMBER() 不带 ORDER BY