如何使用MySQL Trigger生成顺序用户代码?

时间:2012-12-26 10:39:11

标签: mysql triggers

我在表名 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 都可以保持顺序。怎么做?

提前致谢。

2 个答案:

答案 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'