【问题标题】:Trigger to generate customer code触发生成客户代码
【发布时间】:2016-10-23 16:46:43
【问题描述】:

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

CustomerCode 必须是客户姓名的第一个、第三个和最后一个字母,如果有多个客户具有相同的姓名, code 必须加上 1,2,3....etc(eg: RAHAN-RHN, RAHAN-RHN1, RHN2...etc)。

另外,如果有别的名字 *(eg: ROHAN-code must be 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

【问题讨论】:

  • 在寻求帮助之前,您应该尝试自己编写触发器。
  • 谢谢,我正在努力..
  • 触发器是高度特定于供应商的 - 所以请添加一个标签来指定您使用的是mysqlpostgresqlsql-serveroracle还是db2 - 或者完全是别的东西。
  • @marc_s 抱歉,它的 SQL SERVER 2008

标签: sql sql-server triggers


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-23
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多