我有一个包含字段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
答案 0 :(得分:0)
我不知道,但也许对你有用。