Триггер для генерации кода клиента

голоса
0

У меня есть таблица с полями customer_code и CUSTOMER_NAME. Я хотел уволить триггер генерировать и обновлять customercode, когда я ввожу имя клиента.

CustomerCode должен быть первым, третьим и последняя буква имени клиента и, если есть несколько клиентов, имеющих такое же имя, код должен быть добавлен с 1,2,3 .... и т.д. (например: Рахан-RHN, Рахан-RHN1, RHN2 ...и т.д).

Другое дело, если есть другое имя * (например: ROHAN-код должен быть RHN3) * Я застрял на этой части

Может кто-то пожалуйста, помогите мне, как скрипт триггера.

благодаря

Это один я создал, но есть ошибка на второй попытке части, как я уже упоминал выше.

CREATE TRIGGER [dbo].[alphaNumericCustomerReference]
ON [dbo].[CUSTOMER_MASTER]
AFTER INSERT IGNORE 

AS  
declare @NewCode nvarchar(50)
declare @NewName nvarchar(50)
declare @checkCode nvarchar(50)
declare @ExtendedRefCode nvarchar(50)
declare @id int,@msg varchar(200)
declare @sameCustomerCount int

select @id= CUST_ID from inserted i;
select @NewCode= UPPER(SUBSTRING(CUST_NAME, 1, 1)+SUBSTRING(CUST_NAME, 3, 1)+RIGHT(CUST_NAME,1)) from inserted i;
select @checkCode=CUST_CODE from dbo.CUSTOMER_MASTER where CUST_CODE=@NewCode
select @NewName=CUST_NAME from inserted i;
select @sameCustomerCount=count(CUST_NAME)-2 from dbo.CUSTOMER_MASTER where CUST_NAME=@NewName
BEGIN
    SET NOCOUNT ON;
if @checkCode is null 
    BEGIN TRY
        UPDATE CUSTOMER_MASTER 
        SET CUST_CODE= @NewCode
        where CUST_ID=@id
        END TRY
    BEGIN CATCH
        PRINT 'Error occured that is'
        set @msg=(SELECT ERROR_MESSAGE())
        print @msg;
    END CATCH
else
    BEGIN TRY
         select @sameCustomerCount=@sameCustomerCount+1;
         select @ExtendedRefCode=@NewCode+convert(nvarchar(255),@sameCustomerCount)
         UPDATE CUSTOMER_MASTER 
         SET CUST_CODE= @ExtendedRefCode
         where CUST_ID=@id
    END TRY
    BEGIN CATCH
        PRINT 'Error occured that is'
        set @msg=(SELECT ERROR_MESSAGE())
        print @msg;
    END CATCH
Задан 23/10/2016 в 16:46
источник пользователем
На других языках...                            


1 ответов

голоса
0

Я не знаю, но, возможно, это будет полезно для вас.

Ответил 23/10/2016 в 17:27
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more