栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有没有办法在mysql数据库中插入带有前缀的自动增量主ID?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有没有办法在mysql数据库中插入带有前缀的自动增量主ID?

首先, 不建议这样做 ,就像其他评论一样,您可以动态生成此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_table1BEFORE INSERT ON table1FOR EACH ROWBEGIN  INSERT INTO table1_seq() VALUES();  SET NEW.id = CONCAt('D', LPAd(LAST_INSERT_ID(), 4,'0'));END$$DELIMITER ;

然后,您只需将行插入

table1

INSERT INTO Table1 () VALUES (),(),();

你会得到

| ID |---------| D0001 || D0002 || D0003 |

这是 SQLFiddle 演示

不可靠的 方法是在

INSERT
语句本身中即时生成新ID

INSERT INTO Table1 (id, ...) SELECt CONCAt('D', LPAd(COALESCE(SUBSTr(MAX(id), 2), 0) + 1, 4, '0')),       ...  FROM table1

这是 SQLFiddle 演示

这种方法的问题:

  1. 在高负载下,两个并发会话可以获取相同的
    MAX(id)
    值,因此生成相同的新id导致插入失败。
  2. 您不能使用多插入语句


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号