一意のvarcharフィールドを挿入して更新するトリガを書き込む方法.....

contact という名前のテーブルがあります。

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

最初の2行、 Contact_ID Name を挿入すると、3行目( MMS_Contact_ID )が自動的に更新されます。このような:

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

2番目のレコード(id = 2とname = B)を挿入するとき、どのようにすることができますか? MMS_Contact_ID は自動的にMMSC000002に更新されますか?

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

1

2 答え

このようなもの:

create trigger trupdcont before insert on contact for each row

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

挿入する前に、トリガーは3番目の列の "contact_id および update " MMSC "+ max(contact_id)+1 LPAD で割り当てられたゼロをトライする)。

0
追加された
@ thavanあなたが正しいです、私は値を受け入れる必要はありません。 contact_id の列にあります:)
追加された 著者 aF.,

@ aFの答えを適応させると、私は選択が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があります

0
追加された
はい、あなたは正しいです:)私は私も編集しました。あなたの答えでは、 contact_ID ではなく contact_ID です。
追加された 著者 aF.,
新しい行の更新は後のトリガーでは許可されていません....私はエラーを受け取りました...しかし、私は最初の2つの列データを挿入するときのようにしたい3番目の列データgenrate automaticall ...どのように3番目の列データを自動的に取得する
追加された 著者 Anilkumar Chowdary,