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 tableinserted
是可用的,但我不知道如何处理不同的触发器(插入或更新)
如何继续?在插入/更新后触发
,而不是在插入/更新后触发,因此您只需在插入/更新后更新值,而无需重新执行原始插入或更新操作
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
,并且您的表已正确索引,则不会。您完全正确,谢谢!我会尽快接受(不得不等几分钟)。。。