我需要更新表中的记录,但有可能记录不存在,所以我需要插入记录。通过ADO.NET命令对象执行多个SQL语句
下面是一条SQL语句,它通过首先更新记录来完成我的目标,如果它不存在,它会执行插入操作。我在想,如果它可以通过ADO.NET命令对象直接执行,还是需要进入存储过程。
UPDATE MyTable SET ReservationDate = @ReservationDate WHERE CustomerNumber = XXXX;
IF @@ROWCOUNT=0
INSERT INTO MyTable (CustomerNumber , ReservationDate)
VALUES (@CustomerNumber , @ReservationDate)
如果我可以经由命令对象,而无需存储过程执行它这将意味着用于部署时间少一个依赖性(即部署存储过程)。
真棒答案和水晶般清晰的例子!我从来不知道“合并”命令。谢谢! – webworm 2014-11-08 21:55:22
如果在确定更新/插入哪些记录时使用了更多的字段,这也可以工作吗?例如......如果它不仅仅是CustomerNumber,还有更新/插入预订时使用的VehicleNumber?就像客户拥有多辆车一样。 – webworm 2014-11-08 22:32:34
为什么不能?只需准备适当的参数,使用它们来构建SOURCE表并调整JOIN以匹配/不匹配目标的主键。更新或插入如下 – Steve 2014-11-08 23:45:15