sql - Sql server 触发器根据主键更新值
问题描述
以下是我的查询。
CREATE TRIGGER MyTrigger ON CUSTOMERS
AFTER INSERT
AS
if exists ( select * from CUSTOMERS t
inner join inserted i on i.name<>t.name or i.age<>t.AGE or i.address<>t.address or i.salary<>t.SALARY
and i.id = t.id)
begin
UPDATE c SET c.name = i.name, c.age = i.age c.address=i.address FROM CUSTOMERS as c INNER JOIN inserted i ON c.id = i.id
end go
在这个更新语句中,我想更新所有 id 匹配的列和行。但是当我尝试插入旧行时,id 匹配的地方会更新,并且新记录会被插入
解决方案
如果我是对的,您可以尝试使用内部连接进行更新,如下所示。
CREATE TRIGGER MyTrigger ON CUSTOMERS
AFTER INSERT
AS
if Exists (select * from CUSTOMERS t
inner join inserted i on i.id=t.id
and i.age=t.AGE
and i.[address]=t.[address]
and i.salary=t.SALARY
and i.id <> t.id)
begin
UPDATE c
SET c.name = i.name,
c.age = i.age
--...and so on
FROM CUSTOMERS as c
INNER JOIN inserted i ON c.id <> i.id
end
推荐阅读
- angular - 订阅按钮内的角度订阅点击
- python - 更新模型实例的正确方法?
- jpa - 如何在 Spring Data JPA 中对 AND 和 OR 进行分组?
- sparql - 如何找到绑定到某个位置的主题(sparql)
- c# - CosmosDB DocumentClient.CreateDocumentQuery 为 ISO 格式的日期字符串返回不正确的结果
- sql-server - 在数据库引擎中的兼容性级别更改后,通过 SSIS 中的“分析服务处理”任务处理多维数据集挂起
- vba - 找不到宏或已禁用宏。在 ppt 2016
- html - 我在哪里可以获得针对每个 HTML(XHTML) 标记列出的所有 CSS 元素和属性规范参考?
- python - 对帖子做出反应时添加角色问题
- tensorboard - 如何将不属于图的标量记录到张量板?