带前缀自动递增的自定义主键
在数据库设计中,通常需要遵循特定格式的自定义主键,例如在这种情况下,ID 字段需要在表单中递增'LHPL001','LHPL002','LHPL003'.
解决方案 1:触发器和序列表
此方法利用单独的表来生成序列和触发器来生成序列将这些序列分配给新的
实现:
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('LHPL', LPAD(LAST_INSERT_ID(), 3, '0')); END$$ DELIMITER ;
通过此设置,新行插入到table1会自动生成一个id中带有'LHPL'前缀的序列号字段。
示例:
INSERT INTO Table1 (name) VALUES ('Jhon'), ('Mark');
结果:
ID | NAME |
---|---|
LHPL001 | Jhon |
LHPL002 | Mark |
以上是如何在MySQL中自动生成带有前缀的自定义主键?的详细内容。更多信息请关注PHP中文网其他相关文章!