как написать триггер для вставки и обновления уникального поля varchar .....? - PullRequest
1 голос
/ 06 февраля 2012

У меня есть таблица с именем contact:

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

Когда я вставляю первые 2 строки, Contact_ID и Name, я хочу автоматически обновить третью строку (MMS_Contact_ID). Как это:

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

Когда я вставляю вторую запись (id = 2 и Name = B), как можно MMS_Contact_ID автоматически обновляется до MMSC000002?

Я думаю, что триггер может помочь мне с этим, но как?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

Адаптируя ответ @ 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 уже имеет автоматически увеличенный идентификатор

0 голосов
/ 06 февраля 2012

Примерно так:

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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...