更新触发器,为插入的数据SQL Server设置值

Bri*_*anf 0 sql-server triggers

如果更新正在分配用户,则需要创建一个触发器。而且我们之前没有设置值。

我有这个,但是服务器不喜欢它。...我收到一个错误

'。'附近的语法不正确

在“设置”行上。

CREATE TRIGGER dbo.trgIssueAcknowledged 
ON  dbo.hdIssues
AFTER UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    If (select inserted.AssignedToUserID from inserted) IS NULL 
    begin
        return
    end

    If (select inserted.AssignedToUserID from inserted) = 0
    begin
        return
    end

    If (select inserted.AcknowledgeDate from inserted) IS NULL
    begin
      set inserted.AcknowledgeDate = GETDATE ( );
    end
END 
GO
Run Code Online (Sandbox Code Playgroud)

Lam*_*mak 5

您的触发器有很多问题,它不使用您要更新的真实表,它假设每次仅修改一行,并且的逻辑RETURN太奇怪了。

CREATE TRIGGER dbo.trgIssueAcknowledged 
ON  dbo.hdIssues
AFTER UPDATE
AS 
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

UPDATE A
SET A.AcknowledgeDate = GETDATE()
FROM dbo.hdIssues A
INNER JOIN INSERTED I
    ON A.TheKeyOfTheTable = I.TheKeyOfTheTable 
WHERE A.AcknowledgeDate IS NULL
AND ( A.AssignedToUserID <> 0 AND A.AssignedToUserID IS NOT NULL)

END
Run Code Online (Sandbox Code Playgroud)