我有一个名为contact
的表:
Create table contact (
Contact_ID int PK NOT NULL,
Name varchar(20),
MMS_Contact_ID varchar(10) NOT NULL
)
当我插入前两行Contact_ID
和Name
时,我想自动更新第三行(MMS_Contact_ID
)。像这样:
contact_ID Name MMS_Contact_ID
--------------------------------------
1 A MMSC000001
当插入第二条记录(id = 2和Name = B)时,怎么办?
MMS_Contact_ID
会自动更新为MMSC000002吗?
我认为触发器可以帮助我解决这个问题,但是如何?
答案 0 :(得分:0)
这样的事情:
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
和update
第三列检查为"MMSC" + max(contact_id)+1
(由LPAD
指定的跟踪零)。
答案 1 :(得分:0)
调整@ aF的答案,我认为select是a)不必要的b)竞争条件,所以:
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