我对这个扳机有点问题。我希望它只将请求的信息更新到有问题的行(我刚刚更新的那行),而不是整个表。
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())我如何告诉触发器这只适用于有问题的行?
发布于 2016-08-02 02:18:11
要做到这一点非常简单,首先创建一个您想要保留日志的表的副本,例如,您有包含列SalesOrderId、FirstName、LastName、LastModified的表dbo.SalesOrder
您的版本架构表应该是包含列SalesOrderVersionArhieveId、SalesOrderId、FirstName、LastName、LastModified的dbo.SalesOrderVersionArchieve
下面是如何在SalesOrder表上设置触发器
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表中的更改
https://stackoverflow.com/questions/25568526
复制相似问题