2012-12-26 43 views
0

我已经在表名创建一个MySQL触发BEFORE INSERT agent_mst如下如何使用MySQL触发器生成序列用户代码?

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并插入新的记录,肯定会产生代理代码小号DA0004。因为它正在采取max_id并增加它与1但在这里我想再次获得SDA0003。因此,所有agent_codes可以保持顺序。怎么做?

在此先感谢。

回答

0

知道下一步自动递增ID尝试下面的查询运行,并检查列“AUTO_INCREMENT”:

SHOW TABLE STATUS FROM DBName where name = 'tableName'