我正在尝试将数据插入为主数据ID,该数据在MySQL数据库中具有一个字母数字值和两个数字值。该数据将自动递增生成数字,但字母数字值将是固定的。像D1,D2 .... D54,D55,D56等。这里,“ D”始终相同,但是数字将自动递增。有什么办法吗?
首先, 不建议这样做 ,就像其他评论一样,您可以动态生成此id值。
但是,尽管如此,至少有两种方法可以实现:
或多或少可靠的 方式涉及使用单独的表进行排序和触发
架构:
CREATE TABLE Table1_seq ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ); CREATE TABLE Table1 ( `id` VARCHAR(10) NOT NULL PRIMARY KEY DEFAULT '', ... );
扳机:
DELIMITER $$ CREATE TRIGGER tg_bi_table1 BEFORE INSERT ON table1 FOR EACH ROW BEGIN INSERT INTO table1_seq() VALUES(); SET NEW.id = CONCAT('D', LPAD(LAST_INSERT_ID(), 4,'0')); END$$ DELIMITER ;
然后,您只需将行插入 table1
table1
INSERT INTO Table1 () VALUES (),(),();
你会得到
| ID | --------- | D0001 | | D0002 | | D0003 |
这是 SQLFiddle 演示
不可靠的 方法是在INSERT语句本身中即时生成新ID
INSERT
INSERT INTO Table1 (id, ...) SELECT CONCAT('D', LPAD(COALESCE(SUBSTR(MAX(id), 2), 0) + 1, 4, '0')), ... FROM table1
这种方法的问题:
MAX(id)