我可以在mysql中创建一个像“t00000000”一样自动递增的ID吗?

我可以在mysql中创建一个像“t00000000”一样自动递增的ID吗?,mysql,Mysql,我正在尝试在mysql中创建自动递增的id,前面有“t0000000”,这可能吗?不幸的是,它只接受序列号 但是,您可以在select查询中使用固定长度7添加此前缀,然后附加t,如下所示: 从中选择CONCAT't',LPADID,7',0'。。。 这将进行以下转换: +----+-------------------+ |ID |选择CONCAT't',LPADID,7',0'| +----+-------------------+ |0 | t0000000| |1 | t0000001|

我正在尝试在mysql中创建自动递增的id,前面有“t0000000”,这可能吗?

不幸的是,它只接受序列号

但是,您可以在select查询中使用固定长度7添加此前缀,然后附加t,如下所示:

从中选择CONCAT't',LPADID,7',0'。。。 这将进行以下转换:

+----+-------------------+ |ID |选择CONCAT't',LPADID,7',0'| +----+-------------------+ |0 | t0000000| |1 | t0000001| |15 | t0000015| |197845 | t0197845| +----+-------------------+
为了实现您的目标,您可以使用触发器拦截插入并添加所需的前缀

例如,表格如下所示:

CREATE TABLE table1_seq ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE table1 (id VARCHAR(7) NOT NULL PRIMARY KEY DEFAULT '0', name VARCHAR(30));
触发器可能是这样的:

DELIMITER $$
CREATE TRIGGER tg_table1_insert
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
    INSERT INTO table1_seq VALUES (NULL);
    SET NEW.id = CONCAT('t', LPAD(LAST_INSERT_ID(), 3, '0'));
END$$
DELIMITER ;
现在,当你插入

INSERT INTO Table1 (name) VALUES ('Jhon'), ('Mark');
你会有

|      ID | NAME |
------------------
| LHPL001 | Jhon |
| LHPL002 | Mark |

在这种情况下,“t0000000”是什么意思?你能更具体一点吗?比如,当你超过9岁时,你是否需要增加0?我只希望这是要增加的ID,而不是仅仅是'1,2,3'我希望t00000000在下一次用户添加时增加到t00000001,T9999999之后是什么?是否有办法在一个表中完成此操作,或者我需要分开表?每个表都应该有自己的主键,并且为每个表添加触发器将使选择和插入变得容易。如果您想处理单个集中索引表上的键,那么在所有查询中都会有很多连接。谢谢!我已经实现了这一点: