Sql server 2005 插入问题后的SQl触发器
我正在使用SQLServer2005开发触发器。我有一个更新后的表的触发器。声明变量后,代码如下所示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 = @
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