我试过这样的事情:
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;
但不工作。
如果Id是您的主键,那么您可能想要:
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);
但是,除非您有某种不想运行的触发器,否则将列更新为相同的值通常没有任何害处。即使使用上面的代码,如果只有一个列值发生变化,您将“更新”其他三个值到它们的相同值。