sql触发器在更新时执行更新

sql触发器在更新时执行更新,sql,triggers,Sql,Triggers,我正在尝试编写一个sql触发器,它将在执行更新时更新另一个表。这实际上用于替换复制(复制存在于我们的生产环境中,但不存在于开发环境中,因为它会在开发环境中导致问题)。 我写了下面的触发器来实现这一点,但它似乎不起作用,我也不知道为什么。(我也不知道如何调试触发器) 你的触发器目前什么也不做(你很幸运(不幸运?),因为语法编译了,但没有达到你想要的效果)。尝试: 参考号: [可能需要为SharedServicesDemo.dbo的第二个实例添加别名。[用户]…](这是MS SQL Server吗?

我正在尝试编写一个sql触发器,它将在执行更新时更新另一个表。这实际上用于替换复制(复制存在于我们的生产环境中,但不存在于开发环境中,因为它会在开发环境中导致问题)。 我写了下面的触发器来实现这一点,但它似乎不起作用,我也不知道为什么。(我也不知道如何调试触发器)


你的触发器目前什么也不做(你很幸运(不幸运?),因为语法编译了,但没有达到你想要的效果)。尝试:

参考号:


[可能需要为
SharedServicesDemo.dbo的第二个实例添加别名。[用户]
…]

(这是MS SQL Server吗?)
选择
更新之后应该做什么?@MAT:我假设用户试图将其用作更新的行集……更新/选择组合看起来很奇怪。我希望有一个
在更新后,完全没有选择。我不是T-SQL程序员,但在PL/SQL中,您可以通过在列名前面添加
new.
来指定需要新值。请参阅此链接:regards请参阅此链接:RegardsHad以更改列名Username,密码散列等插入。用户名等,使其工作,因为他们在那里模棱两可,但它的工作就像一个魅力现在。你能解释一下为什么它不能像我在第一篇文章中添加的insert触发器那样工作吗?正如我所解释的,你的语法错了,但是它编译了,什么也没做。
USE [AuditQuestionnaireManagerDemo]
GO
/****** Object:  Trigger [dbo].[CatchUpdateUser]    Script Date: 01/04/2012 09:25:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER [dbo].[CatchUpdateUser]
   ON  [dbo].[User]
   FOR UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    update SharedServicesDemo.dbo.[User]
        set SharedServicesDemo.dbo.[User].Username = Username,
            SharedServicesDemo.dbo.[User].PasswordHash = PasswordHash,
            SharedServicesDemo.dbo.[User].Salt = Salt,
            SharedServicesDemo.dbo.[User].PersonGUID = PersonGUID,
            SharedServicesDemo.dbo.[User].OrganizationGUID = OrganizationGUID,
            SharedServicesDemo.dbo.[User].IsDeleted = IsDeleted,
            SharedServicesDemo.dbo.[User].IsActive = IsActive
        where SharedServicesDemo.dbo.[User].GUID = GUID
    SELECT GUID, ID, Username, PasswordHash, Salt, PersonGuid, OrganizationGUID, IsDeleted, IsActive From Inserted

END
SET IDENTITY_INSERT SharedServicesDemo.dbo.[User] ON
INSERT INTO SharedServicesDemo.dbo.[User] (GUID, ID, Username, PasswordHash, Salt, PersonGUID, OrganizationGUID, IsDeleted, IsActive)
SELECT GUID, ID, Username, PasswordHash, Salt, PersonGuid, OrganizationGUID, IsDeleted, IsActive From Inserted
SET IDENTITY_INSERT SharedServicesDemo.dbo.[User] OFF
update SharedServicesDemo.dbo.[User] 
set  SharedServicesDemo.dbo.[User].Username = i.Username,
    SharedServicesDemo.dbo.[User].PasswordHash = i.PasswordHash,
    SharedServicesDemo.dbo.[User].Salt = i.Salt,
    SharedServicesDemo.dbo.[User].PersonGUID = i.PersonGUID,
    SharedServicesDemo.dbo.[User].OrganizationGUID = i.OrganizationGUID,
    SharedServicesDemo.dbo.[User].IsDeleted = i.IsDeleted,
    SharedServicesDemo.dbo.[User].IsActive = i.IsActive
From  SharedServicesDemo.dbo.[User]
inner join inserted i ON SharedServicesDemo.dbo.[User].GUID = i.GUID