按照特定模式自动创建empid

时间:2016-07-22 09:37:50

标签: mysql database database-design

我创建了一个员工表,其中包含以下列:

id ||  empId || name || companyCode  
==    ======    ====    =========

我想要自动创建emplId。

选项1: 每个员工都应该获得独特的身份 EmpId应该以companyCode开头。

假设公司代码是' ci',那么其员工ID应该以ci开头,如ci101,ci102 ....

有没有办法像创建一些序列等那样做? 注意:我使用的是mySql 预期产出:

 id ||  empId || name || companyCode  
    ==    ======    ====    =========
    1       ci101     abc       ci
    2       xi101     xyz       xi
    3       ci102     lkj       ci

选项2: 每个公司员工的ID应该从100开始。像X,Y或Z公司的第一个员工应该从101开始,如下所示:

 id ||  empId || name || companyCode  
    ==    ======    ====    =========
    1       101     abc       ci
    2       101     xyz       xi
    3       102     lkj       ci

请帮忙。

2 个答案:

答案 0 :(得分:0)

您可以使用触发器根据公司代码和ID更新插入行的empid,希望这有助于

CREATE TRIGGER empid 
AFTER INSERT ON 'employeeTbl' for each row
begin
    UPDATE `employeeTbl` SET `empId ` = CONCAT(NEW.companyCode, NEW.id) where id=New.id; 
END;

答案 1 :(得分:0)

我不喜欢你建议的选项,因为任意ID不应该带有任何意义。根据正常形式,应该从数据库中确定ID是员工ID或员工是公司雇用的事实,而不是ID的值。

生成员工ID的最简单方法是在最高的一个中添加1:

insert into employees
select 1 + max(id) as new_id, ... values ... 
from employees