首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server更新后触发器

SQL Server更新后触发器
EN

Stack Overflow用户
提问于 2014-08-29 20:41:50
回答 9查看 229.5K关注 0票数 22

我对这个扳机有点问题。我希望它只将请求的信息更新到有问题的行(我刚刚更新的那行),而不是整个表。

代码语言:javascript
运行
复制
CREATE TRIGGER [dbo].[after_update] 
    ON [dbo].[MYTABLE]
    AFTER UPDATE
    AS 
    BEGIN
          UPDATE MYTABLE 
          SET mytable.CHANGED_ON = GETDATE(),
          CHANGED_BY=USER_NAME(USER_ID())

我如何告诉触发器这只适用于有问题的行?

EN

回答 9

Stack Overflow用户

发布于 2015-03-15 01:32:59

以下是我在测试后的示例

代码语言:javascript
运行
复制
CREATE TRIGGER [dbo].UpdateTasadoresName 
ON [dbo].Tasadores  
FOR  UPDATE
AS 
      UPDATE Tasadores 
      SET NombreCompleto = RTRIM( Tasadores.Nombre + ' ' + isnull(Tasadores.ApellidoPaterno,'') + ' ' + isnull(Tasadores.ApellidoMaterno,'')    )  
      FROM Tasadores 
    INNER JOIN INSERTED i ON Tasadores.id = i.id

插入的特殊表格将包含来自更新记录的信息。

票数 20
EN

Stack Overflow用户

发布于 2016-02-11 22:15:34

尝试此操作(更新,而不是在更新之后)

代码语言:javascript
运行
复制
CREATE TRIGGER [dbo].[xxx_update] ON [dbo].[MYTABLE]
    FOR UPDATE
    AS
    BEGIN

        UPDATE MYTABLE
        SET mytable.CHANGED_ON = GETDATE()
            ,CHANGED_BY = USER_NAME(USER_ID())
        FROM inserted
        WHERE MYTABLE.ID = inserted.ID

    END
票数 10
EN

Stack Overflow用户

发布于 2016-08-02 02:18:11

要做到这一点非常简单,首先创建一个您想要保留日志的表的副本,例如,您有包含列SalesOrderId、FirstName、LastName、LastModified的表dbo.SalesOrder

您的版本架构表应该是包含列SalesOrderVersionArhieveId、SalesOrderId、FirstName、LastName、LastModified的dbo.SalesOrderVersionArchieve

下面是如何在SalesOrder表上设置触发器

代码语言:javascript
运行
复制
USE [YOURDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      Karan Dhanu
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE TRIGGER dbo.[CreateVersionArchiveRow]
   ON  dbo.[SalesOrder]
  AFTER Update
AS 
BEGIN

    SET NOCOUNT ON;
INSERT INTO dbo.SalesOrderVersionArchive

   SELECT *
   FROM deleted;

END

现在,如果您在saleOrder表中进行了任何更改,它将显示VersionArchieve表中的更改

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25568526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档