一尘不染

更新,但只有不同的地方(改变了什么)

sql

我试过这样的事情:

UPDATE Person 
SET Name = @Name, Phone = @Phone, Email = @Email, Status = @Status 
WHERE Id = @Id AND Name != @Name AND Phone != @Phone AND Email != @Email AND Status != @Status;

但不工作。


阅读 87

收藏
2022-07-21

共1个答案

一尘不染

如果Id是您的主键,那么您可能想要:

UPDATE Person 
SET Name = @Name, Phone = @Phone, Email = @Email, Status = @Status 
WHERE Id = @Id AND 
   (Name != @Name OR Phone != @Phone OR Email != @Email OR Status != @Status);

但是,除非您有某种不想运行的触发器,否则将列更新为相同的值通常没有任何害处。即使使用上面的代码,如果只有一个列值发生变化,您将“更新”其他三个值到它们的相同值。

2022-07-21