触发生成客户代码

时间:2016-10-23 16:46:44

标签: sql sql-server triggers

我有一个包含字段customer_code和customer_Name的表。 当我插入客户名称时,我想触发一个触发器来生成和更新客户代码。

CustomerCode必须是客户名称的第一个,第三个和最后一个字母,如果有多个客户具有相同的名称, 代码必须添加1,2,3 ......等(例如:RAHAN-RHN,RAHAN-RHN1,RHN2 ......等)。

另一件事是,如果有另一个名字*(例如:ROHAN代码必须是RHN3) *我被困在这部分

有人可以帮助我如何编写触发器脚本。

由于

这是我创建的,但是第二次尝试部分有错误,如上所述。

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

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

1 个答案:

答案 0 :(得分:0)

我不知道,但也许对你有用。