我对这个扳机有点问题。我希望它只将请求的信息更新到有问题的行(我刚刚更新的那行),而不是整个表。
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())我如何告诉触发器这只适用于有问题的行?
发布于 2015-03-15 01:32:59
以下是我在测试后的示例
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插入的特殊表格将包含来自更新记录的信息。
发布于 2016-02-11 22:15:34
尝试此操作(更新,而不是在更新之后)
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发布于 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
复制相似问题