2012-02-06 4 views
1

Iはcontactという名前のテーブルを持っている:最初の2行、Contact_IDNameを挿入していた場合一意のvarcharフィールドを挿入および更新するためのトリガの書き方.....

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

、私は自動的に第三列(MMS_Contact_ID)を更新します。このよう:番目のレコード(ID = 2と名= B)を挿入していた場合

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

、どのよう MMS_Contact_IDは自動的にMMSC000002に更新することができますか?

私はトリガーがこれで私を助けることができると思いますが、どうですか?このような

答えて

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

、トリガ(LPADによって割り当てられたゼロをtraillingで)"MMSC" + max(contact_id)+1ことがmax contact_idupdate 3番目の列をチェックします。 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'); 

AFTER

+0

はい、あなたは正しいです:私は私も同様に編集しました。あなたの答えでは、それは 'contact_ID'ではなく' contact_ID'です。 –

+0

NEW行の更新はafterトリガーでは許可されていません....私はエラーを受け取りました...しかし、私は最初の2つの列データを挿入しているような結果になりたい3番目の列データgenrate automaticall ... 3番目の列データを自動的に取得する方法 –

関連する問題