Sql server 2005 插入问题后的SQl触发器

Sql server 2005 插入问题后的SQl触发器,sql-server-2005,Sql Server 2005,我正在使用SQLServer2005开发触发器。我有一个更新后的表的触发器。声明变量后,代码如下所示 if @isconfirmed_before = 0 and @isconfirmed_after = 1 begin if @invite_userid <> '' begin select @points = points from dbo.InvitePoint where code = 'USR' and packageid = @

我正在使用SQLServer2005开发触发器。我有一个更新后的表的触发器。声明变量后,代码如下所示

if @isconfirmed_before = 0 and @isconfirmed_after = 1
begin

if @invite_userid <> ''
        begin

            select @points = points from dbo.InvitePoint where code = 'USR' and packageid = @packageid
            INSERT INTO InviteCount
                   ([userID]
                   ,[joinMerchantID]
                   ,[packageID]
                   ,[points]
                   ,[joinDate])
             VALUES
                   (@invite_userid
                   ,@merchantid
                   ,@packageid
                   ,@points
                   ,getdate())
        end

 SET @alpha_numeric=''
        SELECT @alpha_numeric=@alpha_numeric+CHAR(n) FROM
        (
            SELECT TOP 8 number AS n FROM master..spt_values
            WHERE TYPE='p' and (number between 48 and 57 or number between 65 and 90)
            ORDER BY NEWID()
        ) AS t 

        update merchant
        set reg_code = @alpha_numeric
        where merchantid = @merchantid

END
当插入行时,该注册码只能插入一次,但每次更新表时,该注册码都会发生变化。我怎样才能做到这一点。请帮帮我,先谢谢你

update merchant   
set reg_code = @alpha_numeric 
where merchantid = @merchantid 
每次有更新时都会执行该代码,因为您没有条件流阻止它有时执行。如果您只想在给定特定条件下执行,则需要将其包装在
If
块中


您会说:“当插入行时,此注册码只应插入一次,但每次更新表时它都会更改。”那么,为什么在更新后的
触发器中会出现这种情况呢?它看起来应该位于插入后的
触发器中。除非我误解了你。

好的,你在触发器方面遇到了很多麻烦。首先,您需要显示实际的create触发器代码。我怀疑您没有正确设置为仅在插入时启动


接下来,您需要假设触发器必须能够处理多个记录插入。每当您在触发器中为标量变量设置一个值时,都可能是做错了什么。这也不可能是您的全部触发器,因为您还没有展示如何获得可变值

给出触发器的完整代码触发器中还有很多其他语句,应该在每次更新后运行。因此,我为后插入创建了一个新触发器。它工作得很好。谢谢你的提醒:)
update merchant   
set reg_code = @alpha_numeric 
where merchantid = @merchantid