Tsql 插入后的SQL触发器更新

Tsql 插入后的SQL触发器更新,tsql,triggers,Tsql,Triggers,我试图创建一个触发器,在插入后将计算字段添加到一个字段中。我已经玩了好几天了,可以用另一双眼睛了。基本上,如果PolicyNum字段为空,并且满足一些其他参数,则触发器将触发、插入我的函数以及一些内务管理项 ALTER TRIGGER PolicyNumber ON Consolidated AFTER INSERT AS BEGIN IF EXISTS (SELECT i.PolicyNum, i.PlanCode FROM Inserted AS i JOIN Conso

我试图创建一个触发器,在插入后将计算字段添加到一个字段中。我已经玩了好几天了,可以用另一双眼睛了。基本上,如果PolicyNum字段为空,并且满足一些其他参数,则触发器将触发、插入我的函数以及一些内务管理项

ALTER TRIGGER PolicyNumber ON Consolidated 

AFTER INSERT
AS
BEGIN
IF EXISTS (SELECT i.PolicyNum, i.PlanCode
    FROM Inserted AS i
    JOIN Consolidated as C
    ON c.ID = i.ID and c.SEQN = i.SEQN
    WHERE C.PolicyNum = '' AND
    C.PlanCode like '%NYL%'
    )

DECLARE @PolicyNumber nVarChar(255)
DECLARE @IMISID nVarChar(10)
DECLARE @SEQID Int

EXEC    @PolicyNumber = [dbo].[fn_GetNYLPolicyNumber]

--Updating Record
UPDATE Consolidated
SET PolicyNum = @PolicyNumber, 
UpdatedBy = 'Trigger', 
UpdatedDate = GETDATE()
WHERE (ID = @IMISID) AND (SEQN = @SEQID)
END

IF语句需要一个BEGIN和相应的END。如果没有这一点,我猜更新总是在启动,你不想这样吗?或者它可能出错了?你目前得到了什么结果?
ALTER TRIGGER PolicyNumber ON Consolidated 

AFTER INSERT
AS
BEGIN
IF EXISTS (SELECT i.PolicyNum, i.PlanCode
    FROM Inserted AS i
    JOIN Consolidated as C
    ON c.ID = i.ID and c.SEQN = i.SEQN
    WHERE C.PolicyNum = '' AND
    C.PlanCode like '%NYL%'
    )
begin
DECLARE @PolicyNumber nVarChar(255)
DECLARE @IMISID nVarChar(10)
DECLARE @SEQID Int

EXEC    @PolicyNumber = [dbo].[fn_GetNYLPolicyNumber]

--Updating Record
UPDATE Consolidated
SET PolicyNum = @PolicyNumber, 
UpdatedBy = 'Trigger', 
UpdatedDate = GETDATE()
WHERE (ID = @IMISID) AND (SEQN = @SEQID)
END
end