我在表名 agent_mst 上创建了一个MySQL Trigger BEFORE INSERT ,如下所示
BEGIN
DECLARE max_id INT;
SET max_id=(SELECT MAX(agent_id_pk)+1 FROM `agent_mst`);
IF (max_id IS NULL) THEN
SET max_id=1;
END IF;
SET NEW.date_added=NOW(),
NEW.date_updated=NOW(),
NEW.agent_code = CONCAT('SDA', LPAD(max_id, 4,'0'));
END
它的作用是,每次我们插入记录时,它都会生成agent_code字段值,如 SDA0001,SDA0002,SDA0003,...
现在假设我删除了代码 SDA0003 的记录并插入新记录,它肯定会生成代理代码 SDA0004 。当它采用 max_id 并将其增加为1.但是在这里我想再次获得 SDA0003 。这样所有 agent_codes 都可以保持顺序。怎么做?
提前致谢。
答案 0 :(得分:1)
您需要识别第一个(最小的)缺失ID。 在这个链接中查看,这是一个在select查询中执行此操作的好方法: Find mininum not used value in mysql table
答案 1 :(得分:0)
要知道下一个自动增量ID,请尝试在查询下方运行并检查“Auto_increment”列:
SHOW TABLE STATUS FROM DBName where name = 'tableName'