Tsql 在插入/更新之前触发更改数据,然后继续

Tsql 在插入/更新之前触发更改数据,然后继续,tsql,Tsql,我试图在插入/更新之前更改数据,下面将描述我试图完成的内容,我只是不知道如何完成 CREATE TRIGGER [my trigger] ON [dbo].[my table] INSTEAD OF INSERT, UPDATE AS BEGIN; IF( **value of column [x] = "a"** ) **change value of column [y] to "b"** **continue insert or update**

我试图在插入/更新之前更改数据,下面将描述我试图完成的内容,我只是不知道如何完成

CREATE TRIGGER [my trigger]
ON [dbo].[my table] 
INSTEAD OF INSERT, UPDATE 
AS
BEGIN;
    IF(  **value of column [x] = "a"**  )
        **change value of column [y] to "b"**

    **continue insert or update**
END;
我知道pseudo table
inserted
是可用的,但我不知道如何处理不同的触发器(插入或更新)


如何继续?

在插入/更新后触发
,而不是在插入/更新后触发
,因此您只需在插入/更新后更新值,而无需重新执行原始插入或更新操作

CREATE TRIGGER [my trigger] ON [dbo].[my table] 
    AFTER INSERT, UPDATE 
AS
BEGIN

    IF UPDATE(Columnx)
    BEGIN

        UPDATE T SET
            ColumnY = 'New Value'
        FROM
            [dbo].[my table] AS T
            INNER JOIN inserted AS I ON T.KeyColumn = I.KeyColumn
        WHERE
            I.ColumnX = 'Value To Check'

    END

END

好的,这也是我的第一个想法,但这是否会产生不必要的负载,因为触发器每次都必须检查整个表?@Aquillo如果您加入
inserted
,并且您的表已正确索引,则不会。您完全正确,谢谢!我会尽快接受(不得不等几分钟)。。。