我可以在mysql中创建一个ID来自动增加't00000000'吗?

时间:2018-02-01 14:38:21

标签: mysql

我正在尝试用't0000000'在mysql中创建自动递增的id,这可能吗?

2 个答案:

答案 0 :(得分:4)

要实现目标,您可以使用触发器拦截插入并添加所需的前缀。

对于您的示例,表格如下:

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 |

答案 1 :(得分:1)

不幸的是AUTO_INCREMENT只接受序列号。

您可以做的是使用固定长度为7的LPAD在您的选择查询中添加此前缀,然后附加t,如下所示:

SELECT CONCAT('t', LPAD(ID, 7, '0')) FROM ...

那将进行以下转换:

+--------+--------------------------------------+
| ID     | SELECT CONCAT('t', LPAD(ID, 7, '0')) |
+--------+--------------------------------------+
| 0      | t0000000                             |
| 1      | t0000001                             |
| 15     | t0000015                             |
| 197845 | t0197845                             |
+--------+--------------------------------------+