Mysql 如何编写触发器以插入和更新唯一的varchar字段。。。。。?

Mysql 如何编写触发器以插入和更新唯一的varchar字段。。。。。?,mysql,triggers,Mysql,Triggers,我有一个名为contact的表: 在插入前两行联系人ID和姓名时,我希望自动更新第三行MMS\U联系人ID。如下所示: contact_ID Name MMS_Contact_ID -------------------------------------- 1 A MMSC000001 当我插入第二条记录id=2和Name=B时,如何 MMS\u联系人\u ID是否自动更新为MMSC00002 我想触发器可以帮我解

我有一个名为contact的表:

在插入前两行联系人ID和姓名时,我希望自动更新第三行MMS\U联系人ID。如下所示:

contact_ID    Name     MMS_Contact_ID
--------------------------------------           
1               A        MMSC000001
当我插入第二条记录id=2和Name=B时,如何 MMS\u联系人\u ID是否自动更新为MMSC00002

我想触发器可以帮我解决这个问题,但如何解决呢?

类似这样的问题:

create trigger trupdcont before insert on contact for each row

set new.MMS_Contact_ID := 'MMSC' + LPAD(convert(varchar, new.Contact_ID), 6, '0');

在插入之前,触发器检查max contact_id,并使用LPAD分配的跟踪零将第三列更新为MMSC+maxcontact_id+1。

根据@aF的回答,我认为选择是一个不必要的竞争条件,因此:

create trigger trupdcont after insert on contact for each row
set new.MMS_Contact_ID := 'MMSC' + LPAD(convert(varchar, new.contact_ID), 6, '0');

AFTER INSERT触发器已经具有自动递增的ID

@thavan您是对的,我不需要接受该值。在联系人id栏:是的,你是对的:我也编辑了我的。在您的回答中,它是Contact_ID,而不是Contact_ID。触发器后不允许更新新行。。。。我出错了。。。但我想得到的结果是,当我插入前两列数据第三列数据genrate自动调用。。。如何自动获取第三列数据
create trigger trupdcont after insert on contact for each row
set new.MMS_Contact_ID := 'MMSC' + LPAD(convert(varchar, new.contact_ID), 6, '0');