在 MySQL 中为自动递增主键添加前缀
作为数据库管理员,您可能会遇到这样的情况:您想要为自动递增主键添加前缀使用特定值递增主键。在本指南中,我们将探索使用单独的排序表和触发器的解决方案。
创建排序表
首先,创建一个表来生成序列值:
CREATE TABLE table1_seq ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY );
创建主程序表
接下来,使用 VARCHAR 类型创建主键列并指定默认值“0”:
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 ;
向主表插入数据
现在,您可以在不指定主键值的情况下向主表插入数据。触发器将自动生成 ID 并为其添加前缀:
INSERT INTO Table1 (name) VALUES ('Jhon'), ('Mark');
输出
插入数据后,表将显示以下带有前缀主键的记录:
| ID | NAME | ------------------ | LHPL001 | Jhon | | LHPL002 | Mark |
SQLFiddle演示
实际演示可以参考这里的SQLFiddle演示:[链接]
以上是MySQL如何给自增主键加上前缀?的详细内容。更多信息请关注PHP中文网其他相关文章!