2012-02-06 3 views
1

나는 테이블이 contact 이름이 :어떻게 고유 varchar 필드를 삽입하고 업데이트 할 수있는 트리거를 작성합니까 .....?

Create table contact (
    Contact_ID int PK NOT NULL, 
    Name varchar(20), 
    MMS_Contact_ID varchar(10) NOT NULL 
) 

처음 2 행을 삽입하고, Contact_IDName, 난 자동으로 세 번째 행 (MMS_Contact_ID)를 업데이트하고 싶습니다. 이처럼 : MMS_Contact_ID 자동 MMSC000002으로 업데이트 할 수있는 방법을

contact_ID Name  MMS_Contact_ID 
--------------------------------------   
1    A  MMSC000001 

두 번째 레코드 (ID = 2 이름 = B)를 삽입하고,?

방아쇠가 나를 도울 수 있다고 생각하지만 어떻게해야합니까? 이런

답변

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'); 

는 트리거 "MMSC" + max(contact_id)+1합니다 (LPAD 할당 trailling 0을 포함)가되도록하고 max contact_idupdate 번째 열을 검사한다. AF의 대답 @ 적응

+1

@thavan을 맞습니다. 나는 그 가치를 받아 들일 필요가 없습니다. 그것은'contact_id' 칼럼에 있습니다 :) –

0

, 나는 선택)이 필요 없게 생각와 b) 그래서 경쟁 조건 : INSERT 트리거는 이미 자동 증가 ID가

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

애프터

+0

예, 당신 말이 맞아요. 나는 또한 편집했습니다. 당신의 답은'contact_ID'가 아니라'Contact_ID'입니다. –

+0

NEW 행의 업데이트가 트리거 이후에 ​​허용되지 않습니다 .... 오류가 발생했습니다 ...하지만 처음 두 열 데이터를 삽입 할 때처럼 결과를 내고 싶습니다. 3 번째 열 데이터 genrate automaticall ... 자동으로 세 번째 열 데이터를 얻는 방법 –

관련 문제