如何设置mysql数据库 表ID增量_有没有办法在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_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

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

你会得到的

| ID |

---------

| D0001 |

| D0002 |

| D0003 |

不可靠的方法是在INSERT语句本身动态生成新的id

INSERT INTO Table1 (id, ...)

SELECT CONCAT('D', LPAD(COALESCE(SUBSTR(MAX(id), 2), 0) + 1, 4, '0')),

...

FROM table1

这种方法存在的问题:

>在重负载下,两个并发会话可以获取相同的MAX(id)值,从而生成相同的新ID,导致插入失败.>您不能使用多插入语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值