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**
END;
我知道伪表inserted
可用,但我不知道如何处理不同的触发器(插入或更新)。
我应该如何继续?
解决方案
使用您的触发器AFTER INSERT/UPDATE
代替INSTEAD OF
,因此您只需要事后更新该值,而无需重做原始插入或更新操作。
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
推荐阅读
- javascript - 简单的改变导致JS崩溃
- r - 使用 RANN 库中的 NN2 预测测试数据
- python - VsCode远程调试,修改pythonpath指向docker容器的python解释器
- types - 在 Aerospike 垃圾箱中设置最小值的原子操作
- php - 如何通过 PHP mail() 函数发送检索到的表
- ios - 为什么我的控件在滚动视图中被挤压?
- android - 取消刷新后,带有 CollapsibleToobarLayout 的 SwipeRefreshLayout 不会向下滚动
- reactjs - 使用 React Router 4 进行条件重定向
- java - Spring Boot uber JAR:无法解析为绝对文件路径,因为它不驻留在文件系统中
- php - 在删除行数据之前删除文件?